Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^5: win32 threads problem

by BrowserUk (Patriarch)
on Dec 08, 2008 at 08:10 UTC ( [id://728875]=note: print w/replies, xml ) Need Help??


in reply to Re^4: win32 threads problem
in thread win32 threads problem

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

sub threads { my ($msg, $peerAddr, $peerPort) = @_; sleep 1; return [1, $msg]; }

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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://728875]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others scrutinizing the Monastery: (3)
As of 2026-04-21 01:57 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found

    Notices?
    hippoepoptai's answer Re: how do I set a cookie and redirect was blessed by hippo!
    erzuuliAnonymous Monks are no longer allowed to use Super Search, due to an excessive use of this resource by robots.