Gdb-remote's async thread sent out the eBroadcastBitRunPacketSent message *before* actually
sending out the continue packet. Since it's this message the actually triggers the public state
transition, it could happen (and it did happen in TestAttachResume, which does an "process
interrupt" right after a continue) that we attempt to stop the inferior before it was actually
started (which obviously did not end well). This fixes the problem by moving the broadcast after
the packet was actually sent.
Details
Details
Diff Detail
Diff Detail
- Repository
- rL LLVM
Event Timeline
Comment Actions
Looks good as long as we always want to send the broadcast even if the continue packet fails to send.
source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp | ||
---|---|---|
1074–1079 ↗ | (On Diff #38429) | Do we want this to happen even if we fail to send the packet? Should this code be in the else clause above? |
source/Plugins/Process/gdb-remote/GDBRemoteCommunicationClient.cpp | ||
---|---|---|
1074–1079 ↗ | (On Diff #38429) | It was always sent before this change, so I'd probably keep it that way. If the sending fails, we'll have to tear down the whole process anyway. |