<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">Hi, been seeing an issue very frequently while single-stepping a remote multithreaded iOS target. Host is OS X. The crash is in ProcessGDBRemote::WillPublicStop, close to NULL. I downloaded the latest source from git and compiled a debug version. Same scenario crashed in assertion in GetItemAtIndex, idx < GetSize(). The issue appears to be a race between (ProcessGDBRemote.cpp):<div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;">here> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(186, 45, 162);">const</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(112, 61, 170);">size_t</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> n = thread_infos-></span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(49, 89, 93);">GetSize</span><span class="" style="font-variant-ligatures: no-common-ligatures;">();</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(186, 45, 162);">for</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> (</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(112, 61, 170);">size_t</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> i = </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(39, 42, 216);">0</span><span class="" style="font-variant-ligatures: no-common-ligatures;">; i < n; ++i) {</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;">here> </span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(79, 129, 135);">StructuredData</span><span class="" style="font-variant-ligatures: no-common-ligatures;">::</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(79, 129, 135);">Dictionary</span><span class="" style="font-variant-ligatures: no-common-ligatures;"> *thread_dict =</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="font-variant-ligatures: no-common-ligatures;"> thread_infos-></span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(49, 89, 93);">GetItemAtIndex</span><span class="" style="font-variant-ligatures: no-common-ligatures;">(i)-></span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(49, 89, 93);">GetAsDictionary</span><span class="" style="font-variant-ligatures: no-common-ligatures;">();</span></div></div><div class=""><span class="" style="font-variant-ligatures: no-common-ligatures;"><br class=""></span></div><div class=""><span class="" style="font-variant-ligatures: no-common-ligatures;"><br class=""></span></div><div class="">For testing, I added:</div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo; color: rgb(112, 61, 170);"><span class="" style="font-variant-ligatures: no-common-ligatures;">std</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">::</span><span class="" style="font-variant-ligatures: no-common-ligatures;">lock_guard</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);"><</span><span class="" style="font-variant-ligatures: no-common-ligatures;">std</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">::</span><span class="" style="font-variant-ligatures: no-common-ligatures;">recursive_mutex</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">> guard(</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(79, 129, 135);">m_thread_list_real</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">.</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(49, 89, 93);">GetMutex</span><span class="" style="font-variant-ligatures: no-common-ligatures; color: rgb(0, 0, 0);">());</span></div></div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">To first line of ProcessGDBRemote::WillPublicStop. Seemed to resolve my issue, but have not tested extensively.</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">Best regards,</div><div class="" style="margin: 0px; line-height: normal;"><br class=""></div><div class="" style="margin: 0px; line-height: normal;">Braden</div></body></html>