Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re^4: win32 threads problem

by leonidlm (Pilgrim)
on Dec 08, 2008 at 07:42 UTC ( [id://728874]=note: print w/replies, xml ) Need Help??


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

Thank you. I managed to remove this problem by closing the dir before throwing all these threads. How you debugged it ? How you started to suspect in the first place this is the problem ?
And again, thanks all who helped.

Replies are listed 'Best First'.
Re^5: win32 threads problem
by BrowserUk (Patriarch) on Dec 08, 2008 at 08:10 UTC
    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://728874]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2024-03-29 02:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found