Alex Ionescu wrote:
Hartmut Birr wrote:
Hi,
there are three places in the kernel, which does remove wait blocks. They are in KiAbortWaitThread, KiInsertQueue and KiBlockThread. Only in KiBlockThread, Thread->WaitBlockList is set to NULL. Is this the problem?
- Hartmut
Hi,
I have been reading Windows Internals II and Windows Internals 4th Edition and I see that the wait blocks are actually supposed to be a circular list... so there should never really be any "NULL". It's possible I based some previous code on this knowledge, which is now conflicting with the ROS implementation of a null-terminated list. I will change the wait code to use circular lists as documented and post a patch.
Best regards, Alex Ionescu
I think, the real problem isn't if the list is NULL terminated or if the WaitBlockList entry from thread is NULL. The real problem is, KiAbortWaitThread is called for a thread which does not waiting.
- Hartmut