From 2a698ffd5fe6152e97beb48b84746757a4beb092 Mon Sep 17 00:00:00 2001 From: Christian Helmuth Date: Mon, 25 Jan 2016 15:46:23 +0100 Subject: [PATCH] signal: prevent submission of contexts w/o receiver This prevents a sporadic null-pointer dereference in the nic_loopback test, which occurred once in 100 runs. I'm not sure if there's still a race window (we may investigate) with context dissolve. --- repos/base/src/base/signal/signal.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/repos/base/src/base/signal/signal.cc b/repos/base/src/base/signal/signal.cc index b29c947c7..22f41f3e3 100644 --- a/repos/base/src/base/signal/signal.cc +++ b/repos/base/src/base/signal/signal.cc @@ -269,9 +269,13 @@ void Signal_receiver::dispatch_signals(Signal_source *signal_source) continue; } - /* construct and locally submit signal object */ - Signal::Data signal(context, source_signal.num()); - context->_receiver->local_submit(signal); + if (context->_receiver) { + /* construct and locally submit signal object */ + Signal::Data signal(context, source_signal.num()); + context->_receiver->local_submit(signal); + } else { + PWRN("signal context with no receiver"); + } /* free context lock that was taken by 'test_and_lock' */ context->_lock.unlock();