bug-hurd
[Top][All Lists]
Advanced

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

Re: Guile not running properly on GNU/Hurd


From: Richard Braun
Subject: Re: Guile not running properly on GNU/Hurd
Date: Fri, 8 Feb 2013 23:18:43 +0100
User-agent: Mutt/1.5.20 (2009-06-14)

On Fri, Feb 08, 2013 at 07:08:05PM +0100, Gabriel Schnoering wrote:
> And running various version of guile both with libgc 7.1-9.1,
> problems still occur.
> It seems that libgc will trigger some issue with signal handling and mach.
> 
> Here are the gdb logs for the guile packed with Debian.
> (not sure it is of any use as the issue occurs in another thread)
> http://bpaste.net/show/9qIgjwFjyrYZUGn7FxJ0/ (GNU Guile 2.0.5-deb+1-3)
> 
> And another one from 2.0.7 sources.
> http://bpaste.net/show/WnMIobeRtRaWmJl1ncNg/ (Guile 2.0.7)
> 
> Maybe Richard will be able to give more details about the issue.

Actually, it has nothing to do with Mach. What happens is that, when
catching one of the SIGUSR signals (SIGUSR1 i guess), the process calls
sigsuspend, waiting for the next (probably SIGUSR2). But when returning
from the handler (in sigreturn), the sigcontext is NULL, which actually
makes sigreturn return. This is prohibited, and catched by setting the
stack frame to run the firewall function (which, by running the hlt
instruction, causes the SIGILL signal). I guess we could reduce the
case to a small test unit that calls sigsuspend in a (SA_SIGINFO)
signal handler and see how it goes, in which case there is a bug in the
signal handling code.

See the following glibc files for reference :
 - sysdeps/mach/hurd/i386/trampoline.c
 - sysdeps/mach/hurd/i386/sigreturn.c

-- 
Richard Braun



reply via email to

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