To eliminate potential race conditions, we have also moved our interrupt handling to the Default Dispatch Queue using kIOServiceDefaultQueueName. I'm not sure you want to do this, as I think it might end up causing BundledParallelTaskCompletion() to deadlock itself. As soon as the completion is triggered from the asynchronous interrupt path—even though it is serialized on the same Default Queue—invoking ParallelTaskCompletion (or BundledParallelTaskCompletion) causes the DEXT to crash immediately (Corpse / Address size fault). Can you post the crash log for this? We extracted our core logic into a helper method, DispatchTaskInternal, passing 0xFFFF as a placeholder for the Slot Index. Is your DispatchTaskInternal method just a simple helper method/function or is it actually running on a different queue? If it's on a different queue, then I would strongly suggest that you eliminate that entirely and just do everything on the same thread. The issue here is that, in practice, most of what your
Topic:
App & System Services
SubTopic:
Drivers
Tags: