bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug hurd/24110] SS_DISABLE never set in stack_t value returned by s


From: Svante Signell
Subject: Re: [Bug hurd/24110] SS_DISABLE never set in stack_t value returned by sigaltstack
Date: Mon, 28 Jan 2019 20:22:42 +0100
User-agent: Evolution 3.30.4-1

On Mon, 2019-01-28 at 20:07 +0100, Svante Signell wrote:
> On Sat, 2019-01-26 at 23:24 +0100, Samuel Thibault wrote:
> > Samuel Thibault, le jeu. 24 janv. 2019 13:19:52 +0100, a ecrit:
> > > Svante Signell, le jeu. 24 janv. 2019 12:11:25 +0100, a ecrit:
> > > > However, all these tests are still failing, but now mainly with SIGABRT
> > > > or
> > > > "signal 20 (SIGCHLD) received but handler not on signal stack" or
> > > > "signal
> > > > 30
> > > > (SIGUSR1) received but handler not on signal stack".
> > > > 
> > > > So I think there are still more bugs to hunt down.
> > > 
> > > Yep, but there is most probably some progress here, and possibly it'll
> > > be easier to track down such explicit abort than a SIGILL from out of
> > > space.
> > 
> > I guess this is printed from ./src/libgo/runtime/go-signal.c? It'd be
> > useful to dump the content of st and print sp.
> 
> (gdb) p sp
> $1 = 654468
> (gdb) p st
> $2 = {ss_sp = 0x0, ss_size = 0, ss_flags = 0}

Sorry single-stepping further:

(gdb) p sp
$10 = 654468
(gdb) p stsp + st.ss_size
$11 = 655360
(gdb) p sp < stsp
$12 = 0
(gdb) p sp >= stsp + st.ss_size
$13 = 0
gdb) c
Continuing.
[New Thread 4528.12]

Thread 4 hit Breakpoint 1, runtime.sigtramp (sig=20, info=0x659551c,
context=0x6595328)
    at ../../../src/libgo/runtime/go-signal.c:100
100             if (sp < (uintptr)(stack) || sp >= (uintptr)(stack) +
stack_size) {
(gdb) p sp
$16 = 106516932
gdb) n
101                     sigaltstack(nil, &st);
(gdb)
102                     if ((st.ss_flags & SS_DISABLE) != 0) {
(gdb)
107                     stsp = (uintptr)(st.ss_sp);
(gdb)
108                     if (sp < stsp || sp >= stsp + st.ss_size) {
(gdb) p sp < stsp
$20 = 0
(gdb) p sp >= stsp + st.ss_size
$21 = 1
(gdb) p stsp
$22 = 610332
(gdb) p sp
$23 = 106516932
(gdb) p stack_size
$25 = 128
(gdb) p st
$24 = {ss_sp = 0x9501c, ss_size = 45028, ss_flags = 1}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]