@@ -35,7 +35,7 @@ public void Execute(string args)
3535
3636 ChainStateMachinesBasedOnTaskContinuations ( knownStateMachines ) ;
3737 ChainStateMachinesBasedOnJointableTasks ( allStateMachines ) ;
38- this . MarkThreadingBlockTasks ( allStateMachines ) ;
38+ this . MarkThreadingBlockTasks ( heap , allStateMachines ) ;
3939 MarkUIThreadDependingTasks ( allStateMachines ) ;
4040 FixBrokenDependencies ( allStateMachines ) ;
4141
@@ -348,7 +348,7 @@ private static void FixBrokenDependencies(List<AsyncStateMachine> allStateMachin
348348 }
349349 }
350350
351- private void MarkThreadingBlockTasks ( List < AsyncStateMachine > allStateMachines )
351+ private void MarkThreadingBlockTasks ( ClrHeap heap , List < AsyncStateMachine > allStateMachines )
352352 {
353353 foreach ( ClrRuntime runtime in this . Runtimes )
354354 {
@@ -365,12 +365,13 @@ private void MarkThreadingBlockTasks(List<AsyncStateMachine> allStateMachines)
365365 foreach ( ClrStackRoot stackRoot in thread . EnumerateStackRoots ( ) )
366366 {
367367 ClrObject stackObject = stackRoot . Object ;
368- if ( string . Equals ( stackObject . Type ? . Name , "Microsoft.VisualStudio.Threading.JoinableTask" , StringComparison . Ordinal ) ||
369- string . Equals ( stackObject . Type ? . BaseType ? . Name , "Microsoft.VisualStudio.Threading.JoinableTask" , StringComparison . Ordinal ) )
368+ if ( stackObject . Type is not null &&
369+ ( string . Equals ( stackObject . Type . Name , "Microsoft.VisualStudio.Threading.JoinableTask" , StringComparison . Ordinal ) ||
370+ string . Equals ( stackObject . Type . BaseType ? . Name , "Microsoft.VisualStudio.Threading.JoinableTask" , StringComparison . Ordinal ) ) )
370371 {
371372 if ( visitedObjects . Add ( stackObject . Address ) )
372373 {
373- var joinableTaskObject = new ClrObject ( stackObject . Address , stackObject . Type ) ;
374+ ClrObject joinableTaskObject = heap . GetObject ( stackObject . Address , stackObject . Type ) ;
374375 int state = joinableTaskObject . ReadField < int > ( "state" ) ;
375376 if ( ( state & 0x10 ) == 0x10 )
376377 {
0 commit comments