[Lldb-commits] [PATCH] D38938: Logging: provide a way to safely disable logging in a forked process

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Sun Oct 15 15:59:00 PDT 2017


what are we using fork for, out of curiosity?  It seems pretty hard to make
this work.  Logging isn’t the only thing in the program that might be
holding a mutex, so it seems like this could still happen.

Seems like mixing fork and mutexes is just a fundamentally bad idea, unless
I’m missing something (which i very well could be)

On Sun, Oct 15, 2017 at 3:15 PM Pavel Labath <labath at google.com> wrote:

> On 15 October 2017 at 23:04, Zachary Turner <zturner at google.com> wrote:
> > Doesn’t DisableAllLogChannels acquire a scoped lock? If so wouldn’t it
> just
> > release at the end of the function?
>
>
> The thing is, it is unable to acquire the lock in the first place,
> because the mutex is already "locked". So, the sequence of events is
> process 1, thread 1: acquire lock
> process 1, thread 2: fork(), process 2 is created
> process 1 thread 1: release lock
> everything goes well from now on in process 1...
> process 2, thread one (and only). acquire lock:
> BANG.
> Process 2 is deadlocked because there is noone to release the lock there.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20171015/03677ac9/attachment-0001.html>


More information about the lldb-commits mailing list