New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
false positive: uninit error reported in ld-linux.so for test loader #1135
Comments
From bruen...@google.com on February 20, 2013 14:25:56 this is a known issue. as the suppression entry says, the ld.so copy of strlen is not easily replaced, hence the typical optimized-strlen false positives. like Valgrind, we don't support completely stripped ld.so. the action item is to perhaps add docs so users complain to their distro packagers if this happens to them. Owner: zhao...@google.com |
From zhao...@google.com on February 20, 2013 14:28:09 drmemory and valgrind reports different errors, which makes me think they are different problems. drm: valgrind:
|
From zhao...@google.com on February 20, 2013 15:10:46 by adding debug symbol: Keep this issue open but make its priority low, so we can add the new code pattern that cause the similar false positive in the future. Labels: -Priority-Medium Priority-Low |
From bruen...@google.com on February 20, 2013 16:00:02 this code pattern is the well-known optimized string routine pattern (look for "0xfefefeff" in the code base). there's no reason to keep this open for "code patterns". the action item would be to document the issue w/ no syms for ld.so so users know about it, and perhaps have some automated detection of the issue where the tool would issue a warning. |
From zhao...@google.com on February 20, 2013 17:03:28
Dr.MDr. Memory version 1.5.1187Dr.MDr.MError#1
: UNINITIALIZED READ: reading register eflagsDr.M# 0 ld-linux.so.2!? +0x0 (0xf77950c6 <ld-linux.so.2+0x180c6>)Dr.M# 1 ld-linux.so.2!? +0x0 (0xf77880c3 <ld-linux.so.2+0xb0c3>)Dr.M# 2 ld-linux.so.2!? +0x0 (0xf7783438 <ld-linux.so.2+0x6438>)Dr.M# 3 ld-linux.so.2!? +0x0 (0xf77853a0 <ld-linux.so.2+0x83a0>)Dr.M# 4 ld-linux.so.2!? +0x0 (0xf778fd5d <ld-linux.so.2+0x12d5d>)Dr.M# 5 ld-linux.so.2!? +0x0 (0xf778bc9e <ld-linux.so.2+0xec9e>)Dr.M# 6 ld-linux.so.2!? +0x0 (0xf778f7e4 <ld-linux.so.2+0x127e4>)Dr.M# 7 main [/home/zhaoqin/Workspace/DrMemory/drmemory.svn/tests/unload.c:45]Dr.MNote: @0:00:00.811 in thread 1535Dr.MNote: instruction: jnb $0xf77951e2pausing at error
0xf77950b1: mov (%eax),%ecx
0xf77950b3: mov $0xfefefeff,%ebp
0xf77950b8: mov $0xfefefeff,%edi
0xf77950bd: add %ecx,%ebp
0xf77950bf: xor %ecx,%ebp
0xf77950c1: add %ecx,%edi
0xf77950c3: lea 0x4(%eax),%eax
0xf77950c6: jae 0xf77951e2
(gdb) p/x mc->eax
$4 = 0x9bdc344
(gdb) x/40c 0x9bdc320
0x9bdc320: 121 'y' 47 '/' 98 'b' 117 'u' 105 'i' 108 'l' 100 'd' 115 's'
0x9bdc328: 47 '/' 98 'b' 117 'u' 105 'i' 108 'l' 100 'd' 95 '' 120 'x'
0x9bdc330: 56 '8' 54 '6' 95 '' 100 'd' 98 'b' 103 'g' 46 '.' 115 's'
0x9bdc338: 118 'v' 110 'n' 47 '/' 116 't' 101 'e' 115 's' 116 't' 115 's'
0x9bdc340: 0 '\000' 0 '\000' 0 '\000' 0 '\000' 0 '\000'
it looks like the code is trying to determine the end of string.
We have suppression for strlen in ld-linux.so, but my ld-linux.so does not have the symbol.
Original issue: http://code.google.com/p/drmemory/issues/detail?id=1135
The text was updated successfully, but these errors were encountered: