> 1. what is the trigger for the deQueue to happen?
dequeuing events is part of the main loop.
> 2. what happens if an enqueue interrupts a dequeue?
nothing, in theory those two should be independent.
> The event order suggests that the dequeue never happens, or does not complete,
> or the next enqueue doesn't wait for an associated dequeue to complete. This
> type of problem looks like a missing semaphore or something like it.
Reports that the bug occurs more frequently under load indicate that too.
The one lead I have is that mi/mipointer.c stuff is being called both during
SIGIO handling and during event processing, but I haven't found any
significant overlap yet.
> 1. what is the trigger for the deQueue to happen?
dequeuing events is part of the main loop.
> 2. what happens if an enqueue interrupts a dequeue?
nothing, in theory those two should be independent.
> The event order suggests that the dequeue never happens, or does not complete,
> or the next enqueue doesn't wait for an associated dequeue to complete. This
> type of problem looks like a missing semaphore or something like it.
Reports that the bug occurs more frequently under load indicate that too.
The one lead I have is that mi/mipointer.c stuff is being called both during
SIGIO handling and during event processing, but I haven't found any
significant overlap yet.