(Disclaimer: I only briefly skimmed the PR, so I might got things wrong.) Some thoughts: - I would not impose on applications should handle signals. This could be a mayor annoyance, especially if applications needs being changed of that (this refering to the docs about signalfd etc.)
- A question: does log4cxx use signals of its own? If not, I would use the approach to block all signals before pthread_create() and then restore them afterwards. In one of my $DAYJOB projects I'm doing something along that to archieve that (typed out of memory) sigset_t allset, oldset; sigfillset(&newset); pthread_sigmask(SIG_BLOCK, &allset, &oldset); pthread_create(...); pthread_sigmask(SIG_SET,&oldset); (- Another maybe unrelated thought (people were biten by this in log4cpp -- https://github.com/log4cplus/log4cplus/issues/466): After threads have been created, it is not safe anymore to fork() without exec(). This might be a mayjor problem it threads spawn automatically, but I guess in log4cpp they are only spawned when using the AsyncAppender, so it should be fine.) -- tobi