Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 19 Nov 2013 07:33:20 GMT
From:      Thomas Eckardt <Thomas.Eckardt@thockar.com>
To:        freebsd-gnats-submit@FreeBSD.org
Subject:   threads/184073: wrong signal delivery to multithreaded processes in Perl
Message-ID:  <201311190733.rAJ7XKAg073609@oldred.freebsd.org>
Resent-Message-ID: <201311190740.rAJ7e0uE030983@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>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@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@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:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201311190733.rAJ7XKAg073609>