Date: Sat, 14 May 2011 11:02:38 GMT From: Schaich Alonso <alonsoschaich@gmx.de> To: freebsd-gnats-submit@FreeBSD.org Subject: threads/157040: valgrind detects leaks in libthr.so.3 Message-ID: <201105141102.p4EB2cen039743@red.freebsd.org> Resent-Message-ID: <201105141110.p4EBADVt035904@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 157040 >Category: threads >Synopsis: valgrind detects leaks in libthr.so.3 >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-threads >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sat May 14 11:10:13 UTC 2011 >Closed-Date: >Last-Modified: >Originator: Schaich Alonso >Release: 8.2-RELEASE >Organization: >Environment: FreeBSD tecra 8.2-RELEASE-p1 FreeBSD 8.2-RELEASE-p1 #2: Fri May 13 16:22:22 CEST 2011 root@tecra:/usr/obj/usr/src/sys/GENERIC amd64 >Description: I'm not certain whether this is a problem with libthr or valgrind, however when linking against libpthread even a hello world program will cause valgrind to "detect" a 392 octet block not being freed. If compiled in C++ mode, it will also report seven other blocks: ==5254== Memcheck, a memory error detector ==5254== Copyright (C) 2002-2010, and GNU GPL'd, by Julian Seward et al. ==5254== Using Valgrind-3.6.1 and LibVEX; rerun with -h for copyright info ==5254== Command: ./a.out ==5254== ==5254== ==5254== HEAP SUMMARY: ==5254== in use at exit: 872 bytes in 7 blocks ==5254== total heap usage: 7 allocs, 0 frees, 872 bytes allocated ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 1 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xEE1A4F: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 2 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xEDD837: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 3 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xE7CD1B: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 4 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xE7B2C1: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 5 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xE78948: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 80 bytes in 1 blocks are still reachable in loss record 6 of 7 ==5254== at 0x258A04: calloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0D257: ??? (in /lib/libthr.so.3) ==5254== by 0xD0D49B: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA9F: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xE73F35: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== 392 bytes in 1 blocks are still reachable in loss record 7 of 7 ==5254== at 0x259790: malloc (in /usr/local/lib/valgrind/vgpreload_memcheck-amd64-freebsd.so) ==5254== by 0xD0EEFE: ??? (in /lib/libthr.so.3) ==5254== by 0xD0F882: ??? (in /lib/libthr.so.3) ==5254== by 0xD0DA2C: pthread_mutex_lock (in /lib/libthr.so.3) ==5254== by 0xEE1A4F: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xEE2E72: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0xE678BD: ??? (in /usr/lib/libstdc++.so.6) ==5254== by 0x13E0CF: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x1784E: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x18BB4: ??? (in /libexec/ld-elf.so.1) ==5254== by 0x13758: ??? (in /libexec/ld-elf.so.1) ==5254== ==5254== LEAK SUMMARY: ==5254== definitely lost: 0 bytes in 0 blocks ==5254== indirectly lost: 0 bytes in 0 blocks ==5254== possibly lost: 0 bytes in 0 blocks ==5254== still reachable: 872 bytes in 7 blocks ==5254== suppressed: 0 bytes in 0 blocks ==5254== ==5254== For counts of detected and suppressed errors, rerun with: -v ==5254== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) >How-To-Repeat: write any c programm, e.g.: >Fix: >Release-Note: >Audit-Trail: >Unformatted: >#include <stdlib.h> > >int main() >{ > return (EXIT_SUCCESS); >} > (test.c) for little output: >cc -pthread test.c >valgrind --leak-check=full --show-reachable=yes ./a.out for alot output: >c++ -pthread test.c >valgrind --leak-check=full --show-reachable=yes ./a.out
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201105141102.p4EB2cen039743>