From owner-freebsd-threads@FreeBSD.ORG Fri Jun 11 23:05:15 2004 Return-Path: Delivered-To: freebsd-threads@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 7C5C716A4CE; Fri, 11 Jun 2004 23:05:15 +0000 (GMT) Received: from mail.mcneil.com (rrcs-west-24-199-45-54.biz.rr.com [24.199.45.54]) by mx1.FreeBSD.org (Postfix) with ESMTP id 5EB1343D1F; Fri, 11 Jun 2004 23:05:15 +0000 (GMT) (envelope-from sean@mcneil.com) Received: from localhost (localhost.mcneil.com [127.0.0.1]) by mail.mcneil.com (Postfix) with ESMTP id 77C8FFD03A; Fri, 11 Jun 2004 15:40:33 -0700 (PDT) Received: from mail.mcneil.com ([127.0.0.1]) by localhost (server.mcneil.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 31385-03; Fri, 11 Jun 2004 15:40:33 -0700 (PDT) Received: from [24.199.45.54] (mcneil.com [24.199.45.54]) by mail.mcneil.com (Postfix) with ESMTP id F16F9FD031; Fri, 11 Jun 2004 15:40:32 -0700 (PDT) From: Sean McNeil To: David Xu In-Reply-To: <40CA330F.5090103@freebsd.org> References: <1086944114.76446.5.camel@server.mcneil.com> <1086946114.76446.16.camel@server.mcneil.com> <1086977738.70017.9.camel@server.mcneil.com> <40CA330F.5090103@freebsd.org> Content-Type: text/plain Message-Id: <1086993632.45971.2.camel@server.mcneil.com> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.6 Date: Fri, 11 Jun 2004 15:40:32 -0700 Content-Transfer-Encoding: 7bit X-Virus-Scanned: by amavisd-new at mcneil.com cc: freebsd-threads@freebsd.org cc: freebsd-amd64@freebsd.org Subject: Re: signal handler priority issue X-BeenThere: freebsd-threads@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Threading on FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 11 Jun 2004 23:05:15 -0000 On Fri, 2004-06-11 at 15:32, David Xu wrote: > Sean McNeil wrote: > > >On Fri, 2004-06-11 at 07:40, David Xu wrote: > > > > > >>Sean McNeil wrote: > >> > >> > >> > >>>Sorry for top-posting, but it may be easier to read this way.... > >>> > >>>The program below has an optimization bug in that done isn't declare > >>>volatile. With that fixed, it works just fine. I've been attempting to > >>>get boehm-gc working and it seems OK with libc_r, but fails with > >>>libpthread. It is essentially doing what the program below does, but > >>>for some reason it gets stuck. Has anyone else been experimenting with > >>>boehm-gc? > >>> > >>>Also, it would really help if I had a debugger that worked with kse > >>>threads. How is that going? Tracking down pthread issues right now has > >>>been difficult with the current debugger. Can anyone throw some patches > >>>my way that may help? > >>> > >>> > >>> > >>> > >>Please try the patch: > >>http://people.freebsd.org/~davidxu/kse/thr_sigsuspend.c.diff > >> > >>the patch is for file /usr/src/lib/libpthread/thread/thr_sigsuspend.c, > >>I believe I caught a bug in the sigsuspend(), thread > >>should scan pending signals first, only when there is > >>no pending signal in wait set, the thread can sleep. > >> > >> > > > >Also, the mask provided by the sigsuspend call should govern what > >handlers get called. So the sigmask should be left in place until after > >the _thr_sig_check_pending(curthread) call. > > > >Thanks for catching this :) > > > >Sean > > > > > > > > > > > > > No the patch is still not correct, before > _thr_sched_switch_unlocked(curthread) returns, signal will be delivered, > so there needs a flag to tell signal dispatching code to use old signal mask > when delivering signal to signal handler. I am working on it, > thanks for your patch. What old signal mask? It should be the signals that sigsuspend allows that get handled within sigsuspend. Make sure the following can still happen: signal is masked. sigsuspend is called with signal unmasked. signal comes in or is pending already. signal handler is called. sigsuspend returns. Sean