|
From: wangyang <wan...@cn...> - 2011-08-05 03:45:21
|
Hello Everyone: Good Morning. I have question. I want to know that if valgrind give the report of " Conditional jump or move depends on uninitialised value(s) ",it really 100% hit, does it have no possibility of miss. Thanks you. |
|
From: John R. <jr...@bi...> - 2011-08-05 14:24:26
|
> I have question. I want to know that if valgrind give the report of " > Conditional jump or move depends on uninitialised value(s) ",it really 100% hit, > does it have no possibility of miss. Memcheck sometimes generates "false positive" error reports, which are "misses" in the terminology above. Specifically: Memcheck does not understand that uninitialized bits don't matter if the known-to-be-valid bits already determine inequality: http://bugs.kde.org/show_bug.cgi?id=117362 Summary: false positive uninit for bitfields or partial word Memcheck does not understand that 0==(x & ~x) regardless of uninitialized bits. In general memcheck does not understand "re-convergent fan-out" of booleans. Memcheck does not understand the properties of the unsigned remainder operator '%' when the divisor is one less than a power of 2. Example: (((a*256*256*256) + (b*256*256) + (c*256) + d) % 255u) === (a + b + c + d) so some low bits of the remainder can be valid even when various high bits of the individual bytes of the dividend are uninitialized. -- |