[ros-dev] Re: [ros-svn] [ion] 20554: - Fix shamefully dangerously broken Work Thread/Queue/Item implementation:

Alex Ionescu ionucu at videotron.ca
Fri Jan 6 03:26:36 CET 2006


Hartmut Birr wrote:

>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. 
>
Hmm perhaps not, but it's still an issue I'm going to tackle tonight 
(last time I tried it failed for mysterious reasons).

>The real problem is,
>KiAbortWaitThread is called for a thread which does not waiting.
>  
>
Ok, since this happened after my worker thread patch and they use kernel 
queues, I reviewed their implementation and found a number of important 
flaws.. wether or not they cause this problem I can't tell for sure, but 
I've also added a debug print before the KeAbortWaitThread call... let 
me know if this patch fixes anything or if the dprint shoes that the 
thread isn't really waiting.

>- Hartmut
>
>____________________________
>
Best regards,
Alex Ionescu


More information about the Ros-dev mailing list