signal handling: virtualization

Roland McGrath roland at redhat.com
Tue Feb 7 20:02:05 UTC 2006


These issues are separate, and I'd prefer to keep separate issues in
separate threads.

> My user-mode virtualization of signal handling stopped working in FC5.
> I figured out why; the details, and a kernel patch, are in:
>   https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=180351
> 
> The dwarf2 unwind info in the vDSO for rt_sigframe, as well as
> the kernel rt_sigreturn() itself, takes a shortcut by referencing the
> struct ucontext directly, instead of via the puc pointer.  This
> means that a thread kill to cancel a pthread_cond_wait causes a
> SIGSEGV when unwinding through the virtualized rt_sigframe.
> (The virtualized frame copies the four scalars {pretcode, sig,
> pinfo, puc} while leaving the full structs behind.)
> Returning from virtualized signal handler also gets a SIGSEGV
> because the kernel uses the ucontext that it "knows" is there,
> instead of accessing it indirectly through the pointer puc.

You need to take this upstream.  Fedora is not going to diverge from the
upstream kernel on an issue like this.  You are proposing a change to the
user ABI for signal handlers.  There is no particular indication that the
use you're making was ever intended to be supported; perhaps you really
just ought to be modifying the context on the stack where the kernel put it.
Perhaps people will agree that you change is desireable, and perhaps not.
At any rate, this is not the place to carry on the discussion of the details.


Thanks,
Roland




More information about the fedora-devel-list mailing list