> On Saturday 08 December 2007 12:10, Christoph Bartoschek wrote: > > In my opinion the problem is, that you have lost transitivity. Assume Word
If transitivity is lost, then it means fast_cmp is broken. My current hypothesis is: the ordering of two N-bit signed words X, Y cannot be correctly established by examining the sign of the N-bit subtraction X - Y (which is what fast_cmp does). It is necessary to examine N+1 bits of subtraction result to establish the correct ordering. I think this is what John Reiser's comment about the carry flag means. This seems to fit the facts best of all: - Problem is not to do with gcc -fstrict-overflow. * That is a recent phenomenon (gcc-4.3 ?) and #147545 was reported in early July. * I rebuilt V with gcc-4.3 -Wstrict-overflow=5 (max paranoia) and got various warnings, but none about m_oset.c - Problem is rarely seen because it requires entries in secVBitsTable to have some specific relationship above and below the 0x8000'0000 midpoint line. Most programs don't use much of the address space and so would be either entirely below or entirely above the line. In any case PDBs are very rare. - Problem happened w/ Wine because perhaps Wine is doing some wierd address space games, and/or Tom is running a 4G+4G kernel, so there is stuff above 0xC000'0000 when there isn't usually. J ------------------------------------------------------------------------- SF.Net email is sponsored by: Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://sourceforge.net/services/buy/index.php _______________________________________________ Valgrind-developers mailing list Valgrind-developers@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/valgrind-developers