Bug#580210: libc6: valgrind reports error in ld-2.10.2.so: use of uninitialised value
On Tue, Jul 27, 2010 at 4:36 AM, Aurelien Jarno aurel...@aurel32.net wrote: The problem is that parts of the dynamic linker code are executing branch instructions which depend on the value of data (e.g. variables) which have not been initialised. That's precisely the kind of problem that Valgrind detects. We have a choice of (at least) two options: 1. Fix the bug in the dynamic linker 2. Shrug and configure valgrind to ignore the problem so that valgrind is still useful for people's programs. Clearly (1) is better but (2) is available for the case where we can't fix the bug in the dynamic linker (or upstream refuses the patch, etc.) Looking more in details, it doesn't seems to be any problem in the dynamic linker. The errors reported are in string comparisons function, which are optimized. They access data further than the size of the data, in order to do parallel comparisons, however they always make sure not to cross a page boundary. Valgrind is not clever enough to understand this method, so it report the error. I am therefore reassigning this bug to this package, so that this problem can be ignored. That seems an unlikely explanation to me because it doesn't seem to be consistent with what Valgrind actually does. Valgrind is complaining not because the data being accessed is not mapped. It is complaining because 1. the initial state of some bits is indeterminate (this is allowed, it's fine and does not generate a diagnostic) AND 2. the flow control in the code depends on the state of those uninitialised bits If you're saying that Valgrind is mis-repoting, are you saying that the relevant bits are in fact initialised, or are you saying that the result of the function *does not depend* on the state of those bits, even though a branch is taken-or-not depending on their state? Thanks, James. -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#580210: libc6: valgrind reports error in ld-2.10.2.so: use of uninitialised value
reassign 580210 valgrind thanks On Tue, May 04, 2010 at 11:33:29AM +0100, James Youngman wrote: Package: libc6 Version: 2.10.2-6 Severity: normal This bug is not a dupe of #456303, since it doesn't go away if we pass --run-libc-freeres=no to Valgrind. The problem is that parts of the dynamic linker code are executing branch instructions which depend on the value of data (e.g. variables) which have not been initialised. That's precisely the kind of problem that Valgrind detects. We have a choice of (at least) two options: 1. Fix the bug in the dynamic linker 2. Shrug and configure valgrind to ignore the problem so that valgrind is still useful for people's programs. Clearly (1) is better but (2) is available for the case where we can't fix the bug in the dynamic linker (or upstream refuses the patch, etc.) Looking more in details, it doesn't seems to be any problem in the dynamic linker. The errors reported are in string comparisons function, which are optimized. They access data further than the size of the data, in order to do parallel comparisons, however they always make sure not to cross a page boundary. Valgrind is not clever enough to understand this method, so it report the error. I am therefore reassigning this bug to this package, so that this problem can be ignored. -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurel...@aurel32.net http://www.aurel32.net -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Bug#580210: libc6: valgrind reports error in ld-2.10.2.so: use of uninitialised value
Package: libc6 Version: 2.10.2-6 Severity: normal This bug is not a dupe of #456303, since it doesn't go away if we pass --run-libc-freeres=no to Valgrind. The problem is that parts of the dynamic linker code are executing branch instructions which depend on the value of data (e.g. variables) which have not been initialised. That's precisely the kind of problem that Valgrind detects. We have a choice of (at least) two options: 1. Fix the bug in the dynamic linker 2. Shrug and configure valgrind to ignore the problem so that valgrind is still useful for people's programs. Clearly (1) is better but (2) is available for the case where we can't fix the bug in the dynamic linker (or upstream refuses the patch, etc.) The shell script below demonstrates the problem. It builds and runs a C program that doesn't do anything. The program is run under valgrind, so you can see the reports of problems in the dynamic linker. #! /bin/sh if ! tcd=$(mktemp -d) then exit 1 fi ( cd $tcd cat donothing.c 'EOF' int main(int argc, char *argv[]) { return 0; } EOF cat donothing.c cc -ggdb -Wall -o ./donothing donothing.c valgrind --run-libc-freeres=no ./donothing rm -f donothing donothing.c ) rmdir $tcd ### END If you remove the --run-libc-freeres=no option, you will _also_ get symptoms of bug #456303, but that is a separate problem. -- System Information: Debian Release: squeeze/sid APT prefers stable APT policy: (990, 'stable'), (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32.9-custom.jy2 (SMP w/4 CPU cores) Locale: LANG=en_IE.UTF-8, LC_CTYPE=en_IE.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages libc6 depends on: ii libc-bin 2.10.2-6 Embedded GNU C Library: Binaries ii libgcc1 1:4.4.2-9 GCC support library libc6 recommends no packages. Versions of packages libc6 suggests: ii debconf [debconf-2.0] 1.5.32 Debian configuration management sy ii glibc-doc 2.10.2-6 Embedded GNU C Library: Documentat ii locales 2.10.2-6 Embedded GNU C Library: National L -- debconf information: glibc/upgrade: true glibc/disable-screensaver: glibc/restart-failed: glibc/restart-services: -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org