kern/120095: gdb fails to catch signals when threading is involved
Christoph Mallon
christoph.mallon at gmx.de
Mon Jan 28 19:20:02 UTC 2008
>Number: 120095
>Category: kern
>Synopsis: gdb fails to catch signals when threading is involved
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Jan 28 19:20:02 UTC 2008
>Closed-Date:
>Last-Modified:
>Originator: Christoph Mallon
>Release: RELENG_6_2 (applies to newer releases, including 8.x, too)
>Organization:
-
>Environment:
FreeBSD tron.homeunix.org 6.2-STABLE FreeBSD 6.2-STABLE #1: Sun Aug 26 08:02:41 CEST 2007 root at tron.homeunix.org:/usr/obj/usr/src/sys/KERNEL i386
>Description:
GDB is not able to catch signals from threaded processes, even if no extra threads get created. According to rwatson@ this is probably a kernel-side signal handling problem and he can reproduce this on 8.x, too (though instead of -pthread he used -lkse, because the standard threading implementation was changed).
Building the test program below with the different thread libraries gives the following results:
[WORKS] no threading: (cc -ggdb test.c)
(gdb) r
Starting program: /usr/home/tron/a.out
Program received signal SIGABRT, Aborted.
0x2814cc47 in kill () from /lib/libc.so.6
(gdb)
[BROKEN] pthread (KSE on my 6.x box): (cc -ggdb -pthread test.c)
(gdb) r
Starting program: /usr/home/tron/a.out
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100103]
Program exited normally.
(gdb)
[WORKS] libthr: (cc -ggdb -lthr test.c)
(gdb) r
Starting program: /usr/home/tron/a.out
[New LWP 100118]
[New Thread 0x804b000 (LWP 100118)]
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x804b000 (LWP 100118)]
0x2815fc47 in kill () from /lib/libc.so.6
(gdb)
[BROKEN] libc_r: (cc -ggdb -lc_r test.c)
(gdb) r
Starting program: /usr/home/tron/a.out
warning: Unable to get location for thread creation breakpoint: generic error
[New LWP 100185]
Cannot find thread, Thread ID=1, generic error
(gdb)
>How-To-Repeat:
#include <sys/types.h>
#include <signal.h>
#include <unistd.h>
int main(void) { kill(getpid(), SIGABRT); }
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list