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.