Svante Signell, le lun. 28 janv. 2019 20:22:42 +0100, a ecrit:
> $24 = {ss_sp = 0x9501c, ss_size = 45028, ss_flags = 1}

Actually these values look odd. You could check with a breakpoint
whether sigaltstack() is really used to set these values.

If that's not what sets it, there's possibly an overwrite from somewhere
else. What you could then do is:

gdb> b sigaltstack.c:55
gdb> c

to get after sigaltstack() has made its duty (after __spin_unlock), and
at that breakpoint, check *argss for the values that were supposed to be
put into s->sigaltstack.ss_sp, and put a hardware watchpoint:

gdb> p &s->sigaltstack.ss_sp
$1 = (void **) 0x1030cd0
gdb> watch * (void **) 0x1030cd0

watching the address instead of the expression is important for the
watch to be hardware-assisted.

That way you'll get to see what modifies the ss_sp field.

Samuel

Reply via email to