Bug#648993: ecl: FTBFS on hurd-i386
- Subject: Bug#648993: ecl: FTBFS on hurd-i386
- From: pino@debian.org (Pino Toscano)
- Date: Sun, 5 Feb 2012 12:56:39 +0100
- Message-id: <[🔎] 201202051256.53123.pino@debian.org>
- In-reply-to: <1321466347.5597.324.camel@s1499.it.kth.se>
- References: <1321466347.5597.324.camel@s1499.it.kth.se>
Hi,
Alle mercoled? 16 novembre 2011, Svante Signell ha scritto:
> The attached patch fixes the FTBFS problems of ecl on GNU/Hurd. When
> native threads are enabled the "./ecl_min compile" command hangs.
Preface: libgc, used by ecl, makes use of the SIGUSR1 & SIGUSR2 signals
(handling them on its own) to respectively suspend and & threads when
the main thread needs to "stop the world" and garbage collect or so.
In ecl, src/c/unixint.d, there is the following function:
| static void
| install_process_interrupt_handler()
| {
| #ifdef SIGRTMIN
| # define DEFAULT_THREAD_INTERRUPT_SIGNAL SIGRTMIN + 2
| #else
| # define DEFAULT_THREAD_INTERRUPT_SIGNAL SIGUSR1
| #endif
| #if defined(ECL_THREADS) && !defined(ECL_MS_WINDOWS_HOST)
| if (ecl_get_option(ECL_OPT_TRAP_INTERRUPT_SIGNAL)) {
| int signal = ecl_get_option(ECL_OPT_THREAD_INTERRUPT_SIGNAL);
| if (signal == 0) {
| signal = DEFAULT_THREAD_INTERRUPT_SIGNAL;
| ecl_set_option(ECL_OPT_THREAD_INTERRUPT_SIGNAL,
| signal);
| }
| mysignal(signal, non_evil_signal_handler);
| #ifdef HAVE_SIGROCMASK
| sigdelset(cl_core.default_sigmask, signal);
| pthread_sigmask(SIG_SETMASK, cl_core.default_sigmask, NULL);
| #endif
| }
| #endif
| }
given on Hurd we don't have realtime signals yet, SIGRTMIN (and
SIGRTMAX) is not defined, which makes SIGUSR1 the signal being used for
the inter-thread communication, overriding the SIGUSR1 handler set by
libgc.
The solution (a bit of hack, actually) I have is use a different signal
for DEFAULT_THREAD_INTERRUPT_SIGNAL (I chose SIGINFO, generally not used
and not POSIX); this allowed me to compile ecl correctly.
I attached the patch for it; note I don't think it should be forwarded
upstream, as it is not clean and kind of working around the lack of
realtime signals in Hurd.
--
Pino Toscano
-------------- next part --------------
A non-text attachment was scrubbed...
Name: hurd.diff
Type: text/x-patch
Size: 280 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-common-lisp-devel/attachments/20120205/aa1b8cdc/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.alioth.debian.org/pipermail/pkg-common-lisp-devel/attachments/20120205/aa1b8cdc/attachment.pgp>
Reply to: