Re: Window updates stall on headless Mac mini
Re: Window updates stall on headless Mac mini
- Subject: Re: Window updates stall on headless Mac mini
- From: Ken Thomases <email@hidden>
- Date: Mon, 21 Mar 2016 14:09:48 -0500
On Mar 21, 2016, at 11:23 AM, Steve Mills <email@hidden> wrote:
>
> On Mar 19, 2016, at 03:27 AM, Ken Thomases <email@hidden> wrote:
>
>> No. The main thread is blocked waiting for another Cocoa thread. It's waiting on an internal pthread condition variable.
>>
>> There must be some other thread which is going to signal that condition variable under some circumstances. In all likelihood, that other thread is blocked on something else, so you have a pseudo-deadlock.
>>
>> Show the backtrace of all threads. Or a sample report, which has similar information.
> * thread #1: tid = 0xf3b18, 0x00007fff89524136 libsystem_kernel.dylib`__psynch_cvwait + 10, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
> * frame #0: 0x00007fff89524136 libsystem_kernel.dylib`__psynch_cvwait + 10
> frame #1: 0x00007fff8fa8b560 libsystem_pthread.dylib`_pthread_cond_wait + 693
> frame #2: 0x00007fff8dea323e AppKit`-[NSViewHierarchyLock _lockForWriting:handler:] + 323
> thread #9: tid = 0xf3c4f, 0x00007fff8951f4de libsystem_kernel.dylib`mach_msg_trap + 10, name = 'com.apple.appkit-heartbeat'
> frame #0: 0x00007fff8951f4de libsystem_kernel.dylib`mach_msg_trap + 10
> frame #1: 0x00007fff8951e64f libsystem_kernel.dylib`mach_msg + 55
> frame #2: 0x00007fff8f2c16d7 CoreGraphics`_CGSSynchronizeWindowBackingStore + 110
> frame #3: 0x00007fff8f2850f7 CoreGraphics`CGSWindowSynchronizeBacking + 40
> frame #4: 0x00007fff8f284dd8 CoreGraphics`lock_window_backing + 910
> frame #5: 0x00007fff8f28491b CoreGraphics`CGSDeviceLock + 52
> frame #6: 0x00007fff87ca4f94 libRIP.A.dylib`ripd_Lock + 40
> frame #7: 0x00007fff87ca38dd libRIP.A.dylib`RIPLayerBltImage + 283
> frame #8: 0x00007fff87ca3591 libRIP.A.dylib`ripc_RenderImage + 265
> frame #9: 0x00007fff87ca9643 libRIP.A.dylib`ripc_EndLayer + 1204
> frame #10: 0x00007fff8f299517 CoreGraphics`CGContextEndTransparencyLayer + 53
> frame #11: 0x00007fff8824719a CoreUI`CUICoreThemeRenderer::DrawProgressBar(CUIDescriptor const*) + 2904
> frame #12: 0x00007fff88242ea9 CoreUI`CUICoreThemeRenderer::Draw(CUIDescriptor const*, CGAffineTransform, CUIReturnInfo&) + 405
> frame #13: 0x00007fff88216391 CoreUI`CUIRenderer::Draw(CGRect, CGContext*, __CFDictionary const*, __CFDictionary const**) + 2275
> frame #14: 0x00007fff88252d6e CoreUI`CUIDraw + 217
> frame #15: 0x00007fff8ded8ada AppKit`__44-[NSAppearance _drawInRect:context:options:]_block_invoke + 64
> frame #16: 0x00007fff8de46f6b AppKit`-[NSCompositeAppearance _callCoreUIWithBlock:] + 183
> frame #17: 0x00007fff8ded8a93 AppKit`-[NSAppearance _drawInRect:context:options:] + 127
> frame #18: 0x00007fff8e1d9e84 AppKit`-[NSProgressIndicator _drawBar:] + 498
> frame #19: 0x00007fff8e140787 AppKit`-[NSProgressIndicator heartBeat:] + 2091
> frame #20: 0x00007fff8e13fbc5 AppKit`-[NSUIHeartBeat _heartBeatThread:] + 1738
Thread 9 is apparently what's blocking your main thread. It is animating a progress indicator. I have encountered my own problems with this heartbeat thread deadlocking Cocoa. (You are not encountering a deadlock, per se.) You can try removing the progress indicator from your UI, turn off its animation, or configure it to not use threaded animation (set the usesThreadedAnimation property to false; you can do this in IB via user attributes).
Regards,
Ken
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden