labath added a comment. In D98822#2685256 <https://reviews.llvm.org/D98822#2685256>, @mgorny wrote:
> In D98822#2685246 <https://reviews.llvm.org/D98822#2685246>, @labath wrote: > >> I've reverted this (121cff78a8032a73aa4fb820625dc1ecae8e3997 >> <https://reviews.llvm.org/rG121cff78a8032a73aa4fb820625dc1ecae8e3997>) >> because it made the linux bot super-flaky. I think it's likely that this >> affects _only_ linux (and the BSD code is fine -- though we don't have a bot >> to verify that), but I didn't want to experiment with partial reverts while >> the bots are wonky. However, it may be interesting the re-land the linux >> support in a separate commit, once we figure out the problem -- my money is >> on the nondeterminism of thread creation. > > How about recommitting without the `clone()` change, i.e. assuming that > `clone` always means thread, and seeing if that causes trouble still? I think I have it figured out -- see the inlined comment. It seems this was one of those (rare) cases where enabling logging actually makes a race _more_ likely... ================ Comment at: lldb/source/Plugins/Process/Linux/NativeProcessLinux.cpp:904-905 + NativeThreadLinux &child_thread = AddThread(child_pid, /*resume*/ true); + // Resume the newly created thread. + ResumeThread(child_thread, eStateRunning, LLDB_INVALID_SIGNAL_NUMBER); + ThreadWasCreated(child_thread); ---------------- This is resuming the thread a second time. If the thread manages to stop between the resume inside AddThread, and here, we will miss the breakpoint (and subsequently crash). Deleting these two lines should fix things. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D98822/new/ https://reviews.llvm.org/D98822 _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits