guile-devel
[Top][All Lists]
Advanced

[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



reply via email to

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