<div dir="ltr">This patch addresses a bug where in a multi-threaded program a new signal from the inferior may be received before all group-stop messages from an earlier signal have been handled. The attached .cpp file exposes the issue:<br>





<ul><li>clang++ -o thread thread.cpp -lpthread -g -O0<br></li><li>lldb ./thread</li><li>r</li><li>hit Ctrl-C</li><li>br set -f thread.cpp -l 11</li><li>c</li><li><hang></li></ul><p>A breakpoint is usually hit before all the group-stop messages involved in restarting the process are handled and the internal state then gets out of sync.<br>



</p>

<p>The attached patch solves the issue and all unit tests pass, I'm not a ptrace expert though so there may be a more appropriate fix. The group-stop handling was taken from the existing ProcessMonitor::MonitorCallback.<br>

</p><p>Thanks,</p><p>Andrew<br></p><p><br></p></div>