From owner-svn-src-all@FreeBSD.ORG Thu Sep 2 12:17:34 2010 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 2577110657BF; Thu, 2 Sep 2010 12:17:34 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id AF62B8FC1E; Thu, 2 Sep 2010 12:17:33 +0000 (UTC) Received: from bigwig.baldwin.cx (66.111.2.69.static.nyinternet.net [66.111.2.69]) by cyrus.watson.org (Postfix) with ESMTPSA id 493E846B09; Thu, 2 Sep 2010 08:17:33 -0400 (EDT) Received: from jhbbsd.localnet (smtp.hudson-trading.com [209.249.190.9]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 7F7A18A03C; Thu, 2 Sep 2010 08:17:18 -0400 (EDT) From: John Baldwin To: David Xu Date: Thu, 2 Sep 2010 08:16:59 -0400 User-Agent: KMail/1.13.5 (FreeBSD/7.3-CBSD-20100819; KDE/4.4.5; amd64; ; ) References: <201009010218.o812IX5G048257@svn.freebsd.org> <201009020639.47198.jhb@freebsd.org> <4C7F8C28.50309@freebsd.org> In-Reply-To: <4C7F8C28.50309@freebsd.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201009020816.59745.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.0.1 (bigwig.baldwin.cx); Thu, 02 Sep 2010 08:17:18 -0400 (EDT) X-Virus-Scanned: clamav-milter 0.95.1 at bigwig.baldwin.cx X-Virus-Status: Clean X-Spam-Status: No, score=-2.6 required=4.2 tests=AWL,BAYES_00 autolearn=ham version=3.2.5 X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bigwig.baldwin.cx Cc: Kostik Belousov , svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r212076 - head/lib/libthr/thread X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Sep 2010 12:17:34 -0000 On Thursday, September 02, 2010 7:36:08 am David Xu wrote: > John Baldwin wrote: > > On Thursday, September 02, 2010 6:22:18 am Kostik Belousov wrote: > > > >> On Thu, Sep 02, 2010 at 05:35:39PM +0000, David Xu wrote: > >> > >>> Kostik Belousov wrote: > >>> > >>> > >>>>> the tf_err may not be equal to ksi_addr! This may need to be fixed. > >>>>> > >>>>> > >>>> The change was introduced by > >>>> r151316 | davidxu | 2005-10-14 > >>>> /* Old FreeBSD-style arguments. */ > >>>> - sf.sf_siginfo = code; > >>>> - sf.sf_addr = regs->tf_err; > >>>> + sf.sf_siginfo = ksi->ksi_code; > >>>> + sf.sf_addr = (register_t)ksi->ksi_addr; > >>>> sf.sf_ahu.sf_handler = catcher; > >>>> > >>>> > >>> :( > >>> > >> The rollback looks straightforward. I explicitely decided to not change > >> any architecture that is not i386. > >> > > > > It may not be this simple. At one point we had a "feature" where we trashed > > tf_err in the trapframe to store the address so it could be passed to sendsig > > for this purpose. I think once we started using ksi_addr here we removed the > > trashing of tf_err as it was no longer necessary. > > > > > I saw RELENG_5 saved it at td_md.md_fault_address, but I really can not > remember > which version has such "feature". ;-) > By the way, I still can not find a modern program uses this old style > and wants to > know the exact fault address. > Kostik Belousov fixed the error I had made when I was implementing > signal queue. See revision 170688 for example: r170688 | jhb | 2007-06-13 18:37:48 -0400 (Wed, 13 Jun 2007) | 6 lines Don't clobber tf_err with the eva from a page fault as the page fault address is saved in ksi_addr already. PR: i386/101379 Submitted by: Tijl Coosemans : tijl ulyssis org Index: trap.c =================================================================== --- trap.c (revision 170687) +++ trap.c (revision 170688) @@ -785,9 +785,6 @@ return (-1); } - /* kludge to pass faulting virtual address to sendsig */ - frame->tf_err = eva; - return((rv == KERN_PROTECTION_FAILURE) ? SIGBUS : SIGSEGV); } Given that, I think the existing code is correct and that there is no bug to be fixed. -- John Baldwin