Re: valgrind on amd64 crashes when delivering signal for threade

看板FB_hackers作者時間11年前 (2014/04/24 14:32), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
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 _______________________________________________ freebsd-hackers@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org"
文章代碼(AID): #1JMA_YI2 (FB_hackers)
文章代碼(AID): #1JMA_YI2 (FB_hackers)