Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Sep 2010 08:16:59 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        David Xu <davidxu@freebsd.org>
Cc:        Kostik Belousov <kostikbel@gmail.com>, svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r212076 - head/lib/libthr/thread
Message-ID:  <201009020816.59745.jhb@freebsd.org>
In-Reply-To: <4C7F8C28.50309@freebsd.org>
References:  <201009010218.o812IX5G048257@svn.freebsd.org> <201009020639.47198.jhb@freebsd.org> <4C7F8C28.50309@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
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



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