When the first signal arrives, tevent_common_signal_handler() crashed: "ev" is
initialized to NULL, so the first "write(ev->pipe_fds[1], &c, 1);" dereferences
NULL.
Rusty, Tridge, please check. Also, can you tell me a bit more about the
environment you tested this in? I'd be curious to see where this survived.
Thanks,
Volker
SIG_INCREMENT(sig_state->signal_count[signum]);
SIG_INCREMENT(sig_state->got_signal);
+ if (sig_state->sig_handlers[signum] != NULL) {
+ ev = sig_state->sig_handlers[signum]->se->event_ctx;
+ /* doesn't matter if this pipe overflows */
+ res = write(ev->pipe_fds[1], &c, 1);
+ }
+
/* Write to each unique event context. */
for (sl = sig_state->sig_handlers[signum]; sl; sl = sl->next) {
if (sl->se->event_ctx != ev) {