Mike Hearn wrote:
Hmm, are you sure this isn't a bug in Valgrind itself? The code it's warning on is this:
inline static void wine_ldt_set_limit( LDT_ENTRY *ent, unsigned int limit ) { if ((ent->HighWord.Bits.Granularity = (limit >= 0x100000))) limit >>= 12; ent->LimitLow = (WORD)limit; ent->HighWord.Bits.LimitHi = (limit >> 16); }
but unless I'm reading it wrong this is not testing ent before initialization at all, it's testing limit, assigning to ent, then testing the result of that assignment ... which seems to be valid.
Of course, working around bugs in Valgrind may be a useful thing to do for now ... that code is seriously terrifying stuff. And I thought Wine was scary :)
Dan there were some late fixes in valgrind about bit manipulation insn:s (yesterday or so IIRC). This could be related. You may want to check out valgrind's svn. A+