in reply to Re^3: Why do my threads sometimes die silenty?
in thread Why do my threads sometimes die silenty?

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.
  • Comment on Re^4: Why do my threads sometimes die silenty?

Replies are listed 'Best First'.
Re^5: Why do my threads sometimes die silenty?
by ikegami (Patriarch) on Sep 21, 2011 at 22:09 UTC
    Recursive calling of special subs (AUTOLOAD, DESTROY) can eat up the C stack.

      It looks like that might do the trick:

      perl -Mthreads -E"AUTOLOAD{ &{ $_[0] } }; async{ fred(); }->join; say +'done'"

      Though it might take a very long time.


      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.