Hi Gal, > bluetoothd receives a SIGPIPE and terminates if writing to a pipe that > was acquired by AcquireNotify and there are no readers. it can be > reproduced by terminating the reader process without closing the reader > end of the pipe. > > Ignoring the SIGPIPE will cause the write operation to return an > error which will be logged as "io_send: Broken pipe". > --- > src/main.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/src/main.c b/src/main.c > index 4716f5388..c62886593 100644 > --- a/src/main.c > +++ b/src/main.c > @@ -691,7 +691,7 @@ int main(int argc, char *argv[]) > uint16_t sdp_mtu = 0; > uint32_t sdp_flags = 0; > int gdbus_flags = 0; > - guint signal, watchdog; > + guint signal_source, watchdog; > const char *watchdog_usec; > > init_defaults(); > @@ -721,7 +721,11 @@ int main(int argc, char *argv[]) > > event_loop = g_main_loop_new(NULL, FALSE); > > - signal = setup_signalfd(); > + signal_source = setup_signalfd(); > + > + /* Ignore SIGPIPE, a broken pipe error will be returned from write > + * attempts to a pipe with no readers */ > + signal(SIGPIPE, SIG_IGN); if we decide not to use MSG_NOSIGNAL, then everything has to go via signalfd and not just by hacking in signal(SIG_IGN). Regards Marcel