There are no DispatchSync calls in our code. Here is the SCMD_DONE: Actually, there is, it's just implicit. Correlating your code with the crash log: Thread 8: ... 2 SCSIControllerDriverKit 0x195e8b364 IOUserSCSIParallelInterfaceController::ParallelTaskCompletion(OSAction*, SCSIUserParallelResponse, int (*)(OSMetaClassBase*, IORPC)) + 156 3 com.mycompany.driverkit.MyDevice 0x1042a6a20 invocation function for block in OsBridge::SCMD_DONE(void*, megasas_cmd_fusion*, SCSIUserParallelResponse*, megasas_cmd_fusion*) You're here: ghc->ivars->sentQueue->DispatchAsync(^{ -> ghc->ParallelTaskCompletion(act, lResp); I don't know enough about the exact details of how you've configured your queues to be certain about what's going on, but I suspect what's going on is that ParallelTaskCompletion is implicitly targeting the crashing thread: Thread 5 Crashed:: : 0 libdispatch.dylib 0x19671aa8c __DISPATCH_WAIT_FOR_QUEUE__ + 484 1 libdispatch.dylib 0x19671a5d0 _dispatch_sync_f_slow + 152 2 DriverKit 0x195d3fc1c
Topic:
App & System Services
SubTopic:
Drivers