Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 23 Apr 2014 23:18:57 -0700
From:      Stanislav Sedov <stas@freebsd.org>
To:        Mikolaj Golub <trociny@freebsd.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: valgrind on amd64 crashes when delivering signal for threaded application
Message-ID:  <5FDC5FC6-8748-494C-982B-0CEF734BD883@freebsd.org>
In-Reply-To: <20140423200135.GA6009@gmail.com>
References:  <20140423200135.GA6009@gmail.com>

index | next in thread | previous in thread | raw e-mail


On Apr 23, 2014, at 1:01 PM, Mikolaj Golub <trociny@freebsd.org> wrote:

>  --- coregrind/m_sigframe/sigframe-amd64-freebsd.c.orig  2014-04-23 22:39:45.000000000 +0300
>  +++ coregrind/m_sigframe/sigframe-amd64-freebsd.c       2014-04-23 22:40:23.000000000 +0300
>  @@ -250,7 +250,7 @@ static Addr build_sigframe(ThreadState *
>      UWord err;
> 
>      rsp -= sizeof(*frame);
>  -   rsp = VG_ROUNDDN(rsp, 16);
>  +   rsp = VG_ROUNDDN(rsp, 16) - 8;
>      frame = (struct sigframe *)rsp;
> 
>      if (!extend(tst, rsp, sizeof(*frame)))
> 
> Unfortunately, I have poor understanding of valgrind internals and
> what is going on exactly when it delivers a signal to the process, so
> failed to find a proper fix.

This sounds like a proper solution to me though.  Stack handling in valgrind
is indeed convoluted, but it seems in this case it clearly misaligns the stack
as it does not take into account the return address.  Any objections if I commit
this fix to valgrind-freebsd?

Thanks a lot for tracking this!

--
ST4096-RIPE





help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5FDC5FC6-8748-494C-982B-0CEF734BD883>