qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] sigaltstack bug in qemu (testing on qemu-ppc)
@ 2012-02-04 14:26 Alex Barcelo
  2012-02-04 23:00 ` Peter Maydell
  0 siblings, 1 reply; 4+ messages in thread
From: Alex Barcelo @ 2012-02-04 14:26 UTC (permalink / raw)
  To: qemu-devel

I am barely able to understand this inline function:

static inline int sas_ss_flags(unsigned long sp)
{
    return (target_sigaltstack_used.ss_size == 0 ? SS_DISABLE
            : on_sig_stack(sp) ? SS_ONSTACK : 0);
}
(signal.c @97)

... and it seems wrong to me when used in the following function. I
have a test program that uses sigaltstack to do some stack
manipulation. It doesn't work.

The function:
    ...
    if ((ka->sa_flags & TARGET_SA_ONSTACK) &&
        (/* here maybe a "!" */ sas_ss_flags(oldsp))) {
    ....
(signal.c, get_sigframe @4121)

Forcing a true value makes everything work (not that I'm claiming it
as the solution, obviously).

I think that it lacks an "!". Either flag SS_DISABLE or SS_ONSTACK are
flags that should *disable* the stack change, so 1 (SS_ONSTACK) and 2
(SS_DISABLE) should not enter the if. And a 0 value means that it
should be ok to do a stack change. It makes sense, but I'm not sure if
I'm oversimplifying things too much. And I wasn't sure if just sending
a patch was ok, given that I don't fully understand the code.

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2012-02-09 22:55 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-04 14:26 [Qemu-devel] sigaltstack bug in qemu (testing on qemu-ppc) Alex Barcelo
2012-02-04 23:00 ` Peter Maydell
2012-02-09 18:36   ` Alex Barcelo
2012-02-09 22:54     ` Alexander Graf

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).