[ros-dev] Regression fixing

Aleksey Bragin aleksey at reactos.org
Sat May 1 10:53:27 CEST 2010


On May 1, 2010, at 7:57 AM, James Tabor wrote:
> I'm reacting to when it gets broken! I could be wrong and when I am I
> do admit it openly! But, you need to read bug 5265. I guess we can
> revert all the gdi batch code to fix it. Yes it fixes it but still the
> real problem persists, what happen to the TEB?
This is exactly the problematic behavior: Why enable GDI batch code  
if it does NOT work?  Fix underlying bug *first* and then enable the  
code. Especially considering that GDI batch may be seen as  
optimization, not as a vital code needed for rendering. Is it?

And honestly, you are trying to find a bug in the wrong direction, in  
my opinion.
Analyze it logically: somehow, TEB appears to work everywhere except  
for your GDI batch code. And, one of the hackfixs you committed in  
46414 is around this code:
        for (; GdiBatchCount > 0; GdiBatchCount--)
        {
            ULONG Size;
             // Process Gdi Batch!
            Size = GdiFlushUserBatch(pDC, (PGDIBATCHHDR) pHdr);
            if (!Size) break;
            pHdr += Size;
         }
You "protected" pHdr pointer dereference inside GdiFlushUserBatch()  
by wrapping it into SEH.
Now let's call Captain Obvious again to help and think, what is more  
probable: Mysterious TEB invalidation, or GdiBatchCount not matching  
the size of pHdr array? So that the reading goes beyond the buffer  
and certainly faults (and you hack-catch this fault in SEH to pretend  
you caught the mysterious kernel bug).
I suspect the latter, because it might be anything - race condition,  
a bug in the code, a buffer overflow, uninitialized variable access,  
or you're trying to flush the batch queue of an already dead thread.

That's just a glance over the bug, without even looking to the code -  
just reading the diff was enough.


> http://www.reactos.org/bugzilla/show_bug.cgi?id=5265
>
> This bug is due to a hax fix I did to help 5265!
> http://www.reactos.org/bugzilla/show_bug.cgi?id=5314
>
> Might I add, no one has followed up on any of my suggestions.
That's why you decided to crash in the non-working code and wait for  
people's reaction? Not good.

>
>>
>>> Look at this as a signal warning before the ship hits the  
>>> reef.......
>>> The ship has turn into the reef!
>>
>> No need to give false signals here, they often lead to loss of  
>> investment
>> (----->example from stock trading area<-----).
> Trying to make money from ReactOS is a bad idea and thinking about
> money from ReactOS, makes this idea delusional.
Your weed is very nice, please share.



More information about the Ros-dev mailing list