Hi Daniel, > >>>> This prevents a deadlog while writing to syslog and then > >>>> we receive a signal to write syslog. > >>> > >>> how is this suppose to work. We get a segmentation fault and have to > >>> return to the mainloop and you expect the code be still fully functional > >>> at that point. > >> > >> I suspected something like this. Recently, I have encountered several > >> times when ConnMan crashes the daemon was stuck and no output > >> whatsoever. Not even a "kill -9" did help. > > > > I have not seen this. Could it be that I screwed up the backtrace symbol > > resolving magic. Or do you happen to have some VPN open and we forgot to > > close all file descriptors. > > Nope, I didn't have any VPN running. I try to grap a full BT next time > it hangs. > > > Potentially we have to add CLOEXEC to all our file descriptors. > >
we still need to fix this and make sure all our file descriptors are set to CLOEXEC. Patches are welcome. Hint ;) > >>> Also the backtrace must be totally wrong in this case since it would > >>> show the mainloop now and not where it really came from. > >> > >> Right, didn't really think this through. So what can we do with the > >> syslog deadlock then? > > > > No idea. > > The man pages from signal are quite clear on this one: > > Async-signal-safe functions > > A signal handler function must be very careful, since processing > elsewhere may be interrupted at some arbitrary point in the execution > of the program. POSIX has the concept of "safe function". If a > signal interrupts the execution of an unsafe function, and handler > calls an unsafe function, then the behavior of the program is > undefined. > > After a bit goolging I found out there are two solution in > the wild to solve this. Either add the log entries to a buffer in memory > and flush it after the signal handler has returned or use a socket to > /dev/log and write directly to it. I think only solution two would make > sense. > > What do you think? Then we should open /dev/log directly and bypass the syslog routines. Regards Marcel _______________________________________________ connman mailing list [email protected] http://lists.connman.net/listinfo/connman
