This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Consensus on MT-, AS- and AC-Safety docs.


On 12/03/2013 08:49 AM, Florian Weimer wrote:
> On 11/29/2013 06:58 PM, Rich Felker wrote:
>> On Fri, Nov 29, 2013 at 12:21:02AM -0500, Carlos O'Donell wrote:
>>> All we need to do is extend the kernel infrastructure to create a
>>> signal entry trampoline like it does for signal return. This
>>> isn't impossible, but requires work.
>> 
>> Kernel help is not required for this. You just set set the signal 
>> handler address to your wrapper in libc when making the
>> rt_sigaction syscall, and then have the wrapper call the real
>> signal handler function, whose address is stored in userspace.
>> There are some nasty atomicity/synchronization issues to cover with
>> the race window between the rt_sigaction syscall (which might
>> change flags affecting how the signal handler runs even though the
>> new handler address will always be the same) and replacing the
>> pointer in userspace, and keeping this entire operation AS-safe,
>> but I'm pretty sure it's possible.
> 
> What should we do about this?  Try to get clarification from Austin
> Group first what's the intended behavior here, or if they intend to
> specify a certain behavior in the future?
> 

I think that's certainly the right start. File a defect with the
Austin Group tracker and ask them the following things:

* What if any unintended consequences could there be if the
  implementation choose to save and restore errno during 
  signal handling?

* Was it ever POSIX's intent to allow a signal handler to
  modify the errno of the interrupted code sequence or was
  that simply a consequence of being a signal handler and
  modifying global state?

... and anything else you think we should get an expert opinion
on before embarking upon a change like this.

Cheers,
Carlos.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]