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

Alex Ionescu ionucu at videotron.ca
Tue Jan 4 10:53:09 CET 2005


Rob Shearman wrote:

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

Looks like I was using an old revision of the code, since I hadn't seen 
the Spincount code. I will add it.

>> 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.

Ah, so that's what was using the hacks. If they are removed, then the 
code would be much easier to share.
By the way, I've made some serious performance improvements to the code, 
by adding a static buffer which is used to hold up to 64 debug sections. 
The rest are then allocated by using the heap. This has a two fold 
advantage:

1) The first CS (used by the Heap Manager on ROS, probably on WINE too), 
one for RtlInitializeHeapManager and the other for RtlAllocateHeap now 
also have a valid Debug Section, because they use the static one.
2) Because the kernel-call is removed, it offers significant improvments 
on ROS,  on WINE too, since there is less code that must run (a tiny 
loop versus a whole heap allocation).

I'm thinking about sending a patch to WineDevel... since it's only two 
functions to be added and the brute heap calls to be replaced by the 
function names, I think it would be easy to integrate.

Best regards,
Alex Ionescu


More information about the Ros-dev mailing list