@@ -518,30 +518,7 @@ bool ThreadList::WillResume() {
518
518
519
519
collection::iterator pos, end = m_threads.end ();
520
520
521
- // See if any thread wants to run stopping others. If it does, then we won't
522
- // setup the other threads for resume, since they aren't going to get a
523
- // chance to run. This is necessary because the SetupForResume might add
524
- // "StopOthers" plans which would then get to be part of the who-gets-to-run
525
- // negotiation, but they're coming in after the fact, and the threads that
526
- // are already set up should take priority.
527
-
528
- bool wants_solo_run = false ;
529
-
530
- for (pos = m_threads.begin (); pos != end; ++pos) {
531
- ThreadSP thread_sp (*pos);
532
- lldbassert (thread_sp->GetCurrentPlan () &&
533
- " thread should not have null thread plan" );
534
- if (thread_sp->GetResumeState () != eStateSuspended &&
535
- thread_sp->GetCurrentPlan ()->StopOthers ()) {
536
- if (thread_sp->IsOperatingSystemPluginThread () &&
537
- !thread_sp->GetBackingThread ())
538
- continue ;
539
- wants_solo_run = true ;
540
- break ;
541
- }
542
- }
543
-
544
- // Now go through the threads and see if any thread wants to run just itself.
521
+ // Go through the threads and see if any thread wants to run just itself.
545
522
// if so then pick one and run it.
546
523
547
524
ThreadList run_me_only_list (m_process);
@@ -583,8 +560,15 @@ bool ThreadList::WillResume() {
583
560
// state before we negotiate who is actually going to get a chance to run...
584
561
// Don't set to resume suspended threads, and if any thread wanted to stop
585
562
// others, only call setup on the threads that request StopOthers...
563
+ bool wants_solo_run = run_me_only_list.GetSize (false ) > 0 ;
586
564
for (pos = m_threads.begin (); pos != end; ++pos) {
587
565
ThreadSP thread_sp (*pos);
566
+ // See if any thread wants to run stopping others. If it does, then we
567
+ // won't setup the other threads for resume, since they aren't going to get
568
+ // a chance to run. This is necessary because the SetupForResume might add
569
+ // "StopOthers" plans which would then get to be part of the who-gets-to-run
570
+ // negotiation, but they're coming in after the fact, and the threads that
571
+ // are already set up should take priority.
588
572
if (thread_sp->GetResumeState () != eStateSuspended &&
589
573
(!wants_solo_run || thread_sp->GetCurrentPlan ()->StopOthers ())) {
590
574
if (thread_sp->IsOperatingSystemPluginThread () &&
0 commit comments