Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I'm using ActivePerl on WindowsXP. I create a thread and then detach. When the thread ends, I get an exception and a message about not having a method called "handler".

(in cleanup) No method called "handler" for  object. at... line 0

Any clues as to what's up and how I handle this?

Replies are listed 'Best First'.
Re: exception when detached thread ends
by BrowserUk (Patriarch) on Feb 22, 2003 at 23:34 UTC

    If you want to resolve this, your going to have to post some code as Nitrox suggested. And also identify which version of AS perl your using?

    I tried various things to try and re-create your scenario, but never came close. It just works. The only tim e I get any error is if I allow the parent to exit before the child resulting in the familar "A thread exited while 2 other threads were still running." msg.

    #! perl -slw use strict; use threads; my $kid = threads->new( sub{ system 'notepad.exe', 'd:\test.txt'; } ); print 'Parent detaching'; print $kid->detach; print 'Parent waiting'; <>; print 'Parent finishing...'; __END__ D:\Perl\test>test Parent detaching Parent waiting ^Z Parent finishing...

    Examine what is said, not who speaks.
    1) When a distinguished but elderly scientist states that something is possible, he is almost certainly right. When he states that something is impossible, he is very probably wrong.
    2) The only way of discovering the limits of the possible is to venture a little way past them into the impossible
    3) Any sufficiently advanced technology is indistinguishable from magic.
    Arthur C. Clarke.
Re: exception when detached thread ends
by Nitrox (Chaplain) on Feb 22, 2003 at 14:26 UTC
    Could you post some code that recreates the error?

    Also, is it possible that the parent thread is ending before your detached thread is?

    -Nitrox

      No, the parent is still running. In a main routine, I create a thread that launches notepad.exe to edit a file. Then I do the detach. When I exit notepad, I get the error. I have other code in the same program that exhibits the same behavior.