in reply to Why do my threads sometimes die silenty?

Seems to me a thread can exit in one of three ways.

Another possibility is that your thread isn't responding because it's blocked, not because it exited. What makes you think it died?

Replies are listed 'Best First'.
Re^2: Why do my threads sometimes die silenty?
by BrowserUk (Patriarch) on Sep 21, 2011 at 20:18 UTC

    There is at least one more way:

    C:\test>perl -Mthreads -E"my $t = async { die "Foo" }->detach; say 'do +ne'" done

    And I'm pretty sure I could come up with a few more.


    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.

      I'm pretty sure the OP meant the thread exited before the process terminated.

      Note that the above is not silent if the die has a chance to execute. (About 50% of the time on this machine.)

        Note that the above is not silent if the die has a chance to execute.

        Yes, but it turns out that is exactly what he was doing. At least in his experiments:

        There are other ways. For example, there were a bunch of versions of perl (most of the 5.8.x series from memory) that (on Windows) silently exited if they ran "Out of memory!" never producing that error message. I had that happen a lot.

        Also, hard to demo since dave-the-m changed the regex engine from recursive to iterative, but previously running a pathological regex in a thread could run it out of C-stack and it would silently disappear. There aren't many things left in perl that consume stack any more, but I wouldn't mind betting that if we could find one, that the thread would still terminate silently.


        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.