Commit 5f3c1055 authored by Erik de Castro Lopo's avatar Erik de Castro Lopo
Browse files

rts: Ignore signal before deleting timer. Fixes #7303.

Was getting an ocassional hang or segfault when building GHC in a
Qemu user space emulation of ARM. Turned out that the ITIMER_SIGNAL
was being delivered *after* the call to timer_delete(). Setting the
signal to SIG_IGN before deleting the timer solves the problem.
parent 22df9533
......@@ -204,6 +204,9 @@ void
exitTicker (rtsBool wait STG_UNUSED)
{
#if defined(USE_TIMER_CREATE)
// Before deleting the timer set the signal to ignore to avoid the
// possibility of the signal being delivered after the timer is deleted.
signal(ITIMER_SIGNAL, SIG_IGN);
timer_delete(timer);
// ignore errors - we don't really care if it fails.
#endif
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment