[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Garbage collector kills REPL server
From: |
Lluís Vilanova |
Subject: |
Garbage collector kills REPL server |
Date: |
Fri, 11 Nov 2016 18:56:18 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) |
Hi!
I have a program that runs "run-server" (from module "system repl server") on a
separate thread (I'm using guile 2.1.4, current master; the problem did not
appear with 2.0).
The REPL server thread receives signals SIGXCPU and SIGPWR while calling
"select", and errors out saying the syscall was interrupted (raised by guile's
interface to the "select" syscall).
The signals are raised by libgc (through "pthread_kill"). SIGPWR (30) is raised
by GC_suspend_all, while SIGXCPU (24) is raised by GC_start_world.
Using sigaction to set these two signals to SIG_IGN on the thread results in a
later lockup (I guess the GC is still blocked trying to stop that thread). Using
it instead to add SA_RESTART to the signal's flags (copying the old handler)
does not solve the problem (select is still interrupted).
Any ideas what I can do to avoid this problem?
Thanks,
Lluis
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Garbage collector kills REPL server,
Lluís Vilanova <=