In perl.git, the branch smoke-me/tonyc/thread-deliver has been created
<http://perl5.git.perl.org/perl.git/commitdiff/c31bd822179cc7eca9e920335ed0faed06f5a29b?hp=0000000000000000000000000000000000000000>
at c31bd822179cc7eca9e920335ed0faed06f5a29b (commit)
- Log -----------------------------------------------------------------
commit c31bd822179cc7eca9e920335ed0faed06f5a29b
Author: Tony Cook <[email protected]>
Date: Tue Jun 24 11:30:59 2014 +1000
[perl #81074] signals to the main thread if the child doesn't request them
Also fixes [perl #120951] so that signal handlers called outside of a
perl thread are marked via the safe signals mechanism to be delivered
to the main thread.
These changes fix the following circumstances:
- the operating system delivers a signal sent to a process to a child
thread instead of the main thread when only the main thread has a
signal handler set. Linux preferably sends signals to the main
thread, but can send them to a child thread instead if the
main thread is busy. Previously perl would attempt to deliver the
signal to the child, now it delivers the signal to the main thread
unless the child has set a handler. [perl #81074]
- a signal is received in the context of a child thread created outside
of perl itself (eg. by Gtk). Previously perl would crash.
[perl #120951]
While testing this update I found in a bug in NetBSD, which doesn't
always initialize thread specific storage to NULL, see:
http://gnats.netbsd.org/cgi-bin/query-pr-single.pl?number=49006
-----------------------------------------------------------------------
--
Perl5 Master Repository