Re: interpreting hang 'sample' output


John Brownie
 

James Walker wrote on 17/6/20 20:11:
Sometimes I get a report of a hang from a user of my product, with output from the ‘sample’ tool but not enough information to replicate a hang on my end. Let’s say it starts like this:

Call graph:
909 Thread_121713 DispatchQueue_1: com.apple.main-thread (serial)
+ 909 start (in FrameForge Storyboard Studio 4.0) + 52 [0x102ace034]
+ 909 NSApplicationMain (in AppKit) + 777 [0x7fff2fbd4b86]
+ 909 -[NSApplication run] (in AppKit) + 658 [0x7fff2fc02d7e]
+ 909 ??? (in FrameForge Storyboard Studio 4.0) load address 0x102acc000 + 0xf4017 [0x102bc0017]
+ 909 -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] (in AppKit) + 1352 [0x7fff2fc11070]
+ 909 _DPSNextEvent (in AppKit) + 883 [0x7fff2fc12829]
+ 909 _BlockUntilNextEventMatchingListInModeWithFilter (in HIToolbox) + 64 [0x7fff315ca579]
+ 909 ReceiveNextEventCommon (in HIToolbox) + 584 [0x7fff315ca7d5]
+ 909 RunCurrentEventLoopInMode (in HIToolbox) + 292 [0x7fff315caabd]
+ 909 CFRunLoopRunSpecific (in CoreFoundation) + 462 [0x7fff3299bece]
+ 885 __CFRunLoopRun (in CoreFoundation) + 1319 [0x7fff3299ca52]
+ ! 885 __CFRunLoopServiceMachPort (in CoreFoundation) + 247 [0x7fff3299df85]
+ ! 885 mach_msg (in libsystem_kernel.dylib) + 60 [0x7fff6c941170]
+ ! 885 mach_msg_trap (in libsystem_kernel.dylib) + 10 [0x7fff6c940dfa]
+ 20 __CFRunLoopRun (in CoreFoundation) + 1871 [0x7fff3299cc7a]
+ ! 17 __CFRunLoopDoTimers (in CoreFoundation) + 322 [0x7fff329b7ed7]

I would have thought that once the tree starts branching, I’d see numbers that more or less add up to the 885, but no, they’re all much smaller. What does that tell me? I’m not seeing anywhere that a lot of samples are taken in my own code.
I think you're misinterpreting the tree. The 885 has two lower calls, each at 885. The next one with 20 is a child of the 909 CFRunLoopRunSpecific, bringing that 909 up to 905, with a further four branches in nodes further down. Similarly, you have 17 of the 20 in __CFRunLoopRun, with another three calls not in the snippet.

I can't help with the other question.

John
--
John Brownie
Mussau-Emira language, New Ireland Province, Papua New Guinea
Kouvola, Finland

Join xcode@apple-dev.groups.io to automatically receive all group messages.