[ros-dev] Re: [ros-diffs] [ion] 12774: Add more Critical Section Debug Data and fix two bugs.

Rob Shearman rob at codeweavers.com
Tue Jan 4 07:58:45 CET 2005


Alex Ionescu wrote:

> Joseph Galbraith wrote:
>
>> ion at svn.reactos.com wrote:
>>
>>> +    DPRINT("Waiting on Critical Section: %x\n", CriticalSection);
>>> +    if (CriticalSection->DebugInfo) 
>>> CriticalSection->DebugInfo->EntryCount++;
>>
>>
>>
>> I'm just reading the diffs here, so I could be way
>> off, but shouldn't this use an InterlockedIncrement...
>> otherwise you could get a context switch between
>> in the middle of your increment to another threading
>> attempting to lock the critical section.  It is just
>> debug information, but still...
>
>
> I suppose that makes sense... I'll look into it.
>
>>
>> Also, looking at the rest of the code, I notice that
>> spin count doesn't appear to be implemented.
>
>
> No, not as of now. It was based on WINE code which doesn't implement 
> this yet (AFAIK).


Yes it does. 
http://cvs.winehq.org/cvsweb/~checkout~/wine/dlls/ntdll/critsection.c?rev=1.27&content-type=text/plain

> I have been optimizing it and adding more feature to make it stabler, 
> so spin lock support for MP builds was on my list. Thanks for your 
> patch... I'll take a look at it.


It would be good if someone could implement the stack backtrace capture 
functions as we could then remove critsec debugging hacks from all over 
the wine tree.

Rob


More information about the Ros-dev mailing list