objective c - NSAnimation crash on com.apple.root.default-qos thread -


i'm working on cocoa application leverages nsopenglview driven cvdisplaylink thread.

we've seen number of crash reports (in wild) following stack trace. 10.11 only.

#29. crashed: com.apple.root.default-qos   0  libobjc.a.dylib                0x7fff933bb4dd objc_msgsend + 29   1  coregraphics                  0x7fff9219f19e cgimagegetproperty + 52   2  quartzcore                    0x7fff93ae1312 ca::render::create_image(cgimage*, cgcolorspace*, unsigned int) + 149   3  quartzcore                    0x7fff93ae0fe6 ca::render::copy_image(cgimage*, cgcolorspace*, unsigned int, double) + 395   4  quartzcore                    0x7fff93aeeb6b ca::render::copy_render_value(void const*, cgcolorspace* (*)()) + 278   5  appkit                        0x7fffa010fcec -[_nscglsurface _copynonatomicrendervalue] + 296   6  quartzcore                    0x7fff93addc35 -[calayer(calayerprivate) _copyrenderlayer:layerflags:commitflags:] + 557   7  quartzcore                    0x7fff93add59d ca::context::commit_layer(ca::layer*, unsigned int, unsigned int, void*) + 103   8  quartzcore                    0x7fff93add4ca ca::layer::commit_if_needed(ca::transaction*, void (*)(ca::layer*, unsigned int, unsigned int, void*), void*) + 330   9  quartzcore                    0x7fff93adba72 ca::context::commit_transaction(ca::transaction*) + 1766   10 quartzcore                    0x7fff93adb0ec ca::transaction::commit() + 508   11 appkit                        0x7fff9f9d95ae -[nsanimation(nsinternal) _advancetimewithdisplaylink:] + 429   12 appkit                        0x7fff9f9d92ea -[nsscreendisplaylink _fire] + 439   13 corefoundation                0x7fffa0b7bb94 __cfrunloop_is_calling_out_to_a_timer_callback_function__ + 20   14 corefoundation                0x7fffa0b7b823 __cfrunloopdotimer + 1075   15 corefoundation                0x7fffa0b7b37a __cfrunloopdotimers + 298   16 corefoundation                0x7fffa0b72871 __cfrunlooprun + 1841   17 corefoundation                0x7fffa0b71ed8 cfrunlooprunspecific + 296   18 foundation                    0x7fff98c92ed9 -[nsrunloop(nsrunloop) runmode:beforedate:] + 270   19 appkit                        0x7fff9f93cd72 -[nsanimation(nsinternal) _runblocking] + 398   20 appkit                        0x7fff9f93cbcb -[nsanimation(nsinternal) _animationthread] + 66   21 libdispatch.dylib              0x7fff8e85593d _dispatch_call_block_and_release + 12   22 libdispatch.dylib              0x7fff8e84a40b _dispatch_client_callout + 8   23 libdispatch.dylib              0x7fff8e84e29b _dispatch_root_queue_drain + 1890   24 libdispatch.dylib              0x7fff8e84db00 _dispatch_worker_thread3 + 91   25 libsystem_pthread.dylib        0x7fff90e4c4de _pthread_wqthread + 1129   26 libsystem_pthread.dylib        0x7fff90e4a341 start_wqthread + 13   

we have cvdisplaylink driven thread in following state:

#35. cvdisplaylink   0  libsystem_platform.dylib      0x7fff9214ddbd _osspinlocklockslow + 79   1  quartzcore                    0x7fff93ad88af -[calayer setcontents:] + 37   2  appkit                        0x7fff9fe302d7 flush_notify + 1169   3  glengine                      0x7fff95e1ecda (missing)   4  opengl                        0x7fff9180effe cglflushdrawable + 66  

when set symbolic breakpoint in ca::render::create_image, cannot hit in com.apple.root.default-qos thread. first question - when stack happen in qos thread? (and not main thread).

i should note crash happens bit above (in cgimagegetproperty). appreciated.


Comments