Date: Mon, 21 Dec 1998 19:22:45 -0800 (PST) From: eischen@vigrid.com To: freebsd-gnats-submit@FreeBSD.ORG Subject: bin/9162: [Patch] pthreads GC breaks signal handling Message-ID: <199812220322.TAA11475@hub.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 9162 >Category: bin >Synopsis: [Patch] pthreads GC breaks signal handling >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Mon Dec 21 19:30:01 PST 1998 >Last-Modified: >Originator: Daniel Eischen >Organization: >Release: 2.2.8-stable and 3.0-current >Environment: FreeBSD klr.clc.gdeb.com 2.2.7-STABLE FreeBSD 2.2.7-STABLE #0: Thu Oct 22 18:12:35 EDT 1998 deischen@klr.clc.gdeb.com:/opt/b/src/src/sys/compile/klr i386 >Description: If a threaded program installs a handler for a signal, and this program receives that signal, then the signal handler is invoked for the garbage collector thread. The GC thread should be transparent to the application and no signal handlers should be called as a result of it being present. >How-To-Repeat: Build and run libc_r/uthread/test/sigwait/sigwait.c (these tests are there for a reason, no? ;-)) >Fix: One fix is to block all signals in the garbage collector thread. Here is a patch: *** uthread_gc.c.orig Mon Dec 21 22:08:54 1998 --- uthread_gc.c Mon Dec 21 22:11:34 1998 *************** *** 47,52 **** --- 47,53 ---- int f_debug; int f_done = 0; int ret; + sigset_t mask; pthread_t pthread; pthread_t pthread_cln; pthread_t pthread_nxt; *************** *** 59,64 **** --- 60,69 ---- /* Set the name of this thread. */ pthread_set_name_np(_thread_run,"GC"); + + /* Block all signals. */ + sigfillset(&mask); + sigprocmask(SIG_BLOCK, &mask, NULL); while (!f_done) { /* Check if debugging this application. */ >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199812220322.TAA11475>