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