threads/184073: wrong signal delivery to multithreaded processes in Perl
Thomas Eckardt
Thomas.Eckardt at thockar.com
Tue Nov 19 07:40:00 UTC 2013
>Number: 184073
>Category: threads
>Synopsis: wrong signal delivery to multithreaded processes in Perl
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-threads
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Nov 19 07:40:00 UTC 2013
>Closed-Date:
>Last-Modified:
>Originator: Thomas Eckardt
>Release: 9,2
>Organization:
thockar
>Environment:
FreeBSD assp.nospam.org 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Thu Sep 26 22:50:31 UTC 2013 root at bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
FreeBSD assp.nospam.org 9.2-RELEASE FreeBSD 9.2-RELEASE #0 r255898: Fri Sep 27 03:52:52 UTC 2013 root at bake.isc.freebsd.org:/usr/obj/usr/src/sys/GENERIC i386
>Description:
using (any) threaded perl (5.10 ... 5.18) and any freebsd version 8.x (or gt) the following happens:
If a Perl script starts multiple threads (iThreads) - but at least one thread, all OS signals like 'kill -INT PID' are sent to the last started thread - NOT to the parent thread like expected.
freebsd versions below version 8 are not tested
Perl versions below 5.10 are not tested because of known Perl issue
>How-To-Repeat:
start multiple iThreads in Perl (interactive) - try to terminate or interrupt the script via keyboard or from another process using 'kill -SIG PID' - this will not work.
I have a nice small perl script available to force/show the issue.
Tell me if you need it.
>Fix:
No workaround.
The last started Perl child thread must send the received SIG to the parent thread. How ever, this makes it very hard to use signals for inter-thread communication and controlling
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-threads
mailing list