|
|
| Syntactic Confectionery Delight | |
| PerlMonks |
Re^5: win32 threads problemby BrowserUk (Patriarch) |
| on Dec 08, 2008 at 08:10 UTC ( [id://728875]=note: print w/replies, xml ) | Need Help?? |
|
I managed to remove this problem by closing the dir before throwing all these threads. Hm. I tried that here and it didn't effect a cure reliably. It would sometimes (mostly), work with small numbers of files (threads), but if I asked it to run a couple of hundred threads it always failed during globals destruction. But when I used a glob, the problem disappeared. (I'll have another go later to confirm my findings!) As for how to debug it, the watchword with threads is pretty much always the same: simplify. First I tried a non-threaded version. No trap. Then a one threaded. No trap. Then 10 threads--trap. So then I tried simplifying the thread proc. Take out everything except
Still traps, so look outside. Replaced the while( readdir ) with while( <DATA> ) { and a list of files that caused a trap and the trap went away. Put back the full thread proc and a larger DATA section, trap still didn't happen. Put back the opendir/readdir/closedir. Trap returns. Try glob. trap disappears again. Bingo! Update: I just tried building the file list using opendir/readdir/closedir first, and then starting the threads again, and this time it worked fine. Maybe I missed that combination last night. Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
In Section
Seekers of Perl Wisdom
|
|
||||||||||||||||||||||||||||||