| Summary: | Helgrind: The impossible happened core should have checked this | ||
|---|---|---|---|
| Product: | [Developer tools] valgrind | Reporter: | Bill Drissel <drisselpc> |
| Component: | helgrind | Assignee: | Julian Seward <jseward> |
| Status: | RESOLVED WORKSFORME | ||
| Severity: | crash | CC: | njn |
| Priority: | NOR | Keywords: | investigated, triaged |
| Version First Reported In: | 2.1.1 | ||
| Target Milestone: | --- | ||
| Platform: | Debian stable | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
I'm closing crashing and similar bugs that are more than two years old. If you still see this problem with Valgrind 3.4.1 please reopen the bug report. Thanks. (In this case, Helgrind has been completely rewritten, as has much of the rest of Valgrind.) Dear Bug Submitter, This bug has been in NEEDSINFO status with no change for at least 15 days. Please provide the requested information as soon as possible and set the bug status as REPORTED. Due to regular bug tracker maintenance, if the bug is still in NEEDSINFO status with no change in 30 days the bug will be closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging If you have already provided the requested information, please mark the bug as REPORTED so that the KDE team knows that the bug is ready to be confirmed. Thank you for helping us make KDE software even better for everyone! This bug has been in NEEDSINFO status with no change for at least 30 days. The bug is now closed as RESOLVED > WORKSFORME due to lack of needed information. For more information about our bug triaging procedures please read the wiki located here: https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging Thank you for helping us make KDE software even better for everyone! |
Version: 2.1.1 (using KDE KDE 3.2.3) Installed from: Debian stable Packages Compiler: late model gcc OS: Linux We use recursive mutexes so critical sections can be protected and we don't have to worry about deadlock when a thread has a lock and enters a critical section. The ctor of one of the classes calls pthread_mutex_init() and then locks the mutex. The ctor subsequently calls other functions with critical sections. I'm a total newbie to Valgrind ... trying to hunt down a crash in a GTK based equipment control panel. If the user wants see a real time display of the data, we start a thread to gather the data and compute the display while the parent stays alive to control the equipment with buttons and such. The calls to jmutex() you will see in the Valgrind output file are, in effect, calls to pthread_mutex_lock(). After reporting "locked in inconsistent order", "while holding locks" and "depending on locks", I get "trying to take a lock we already hold." Then the "impossible" complaint. Finally, the command line prompt comes up. My graphics panel is showing and will not close nor react in any way. ps shows the valgrind process still running and kill -9 is required to kill it. I don't know how to include the valgrind output file but I'll try to paste it into this report. Regards, Bill Drissel Valgrind ouput > ==3242== Helgrind, a data race detector for x86-linux. ==3242== Copyright (C) 2002-2004, and GNU GPL'd, by Nicholas Nethercote. ==3242== Using valgrind-2.1.1, a program supervision framework for x86-linux. ==3242== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward. ==3242== ==3242== My PID = 3242, parent PID = 3241. Prog and args are: ==3242== RXRControlOnly ==3242== 78 ==3242== ==3242== Valgrind library directory: /usr/lib/valgrind ==3242== Command line ==3242== RXRControlOnly ==3242== 78 ==3242== Startup, with flags: ==3242== --tool=memcheck ==3242== -v ==3242== --tool=helgrind ==3242== --gen-suppressions=yes ==3242== --logfile=F309 ==3242== --suppressions=./only.supp ==3242== -- ==3242== Reading syms from /home/drissel/Projects/RXRControlPanel/src/RXRControlOnly (0x8048000) ==3242== Reading syms from /lib/ld-2.3.2.so (0x3F000000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/ld-2.3.2.so (0xB0000000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libdl-2.3.2.so (0xB0026000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libc-2.3.2.so (0xB0029000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/valgrind/vgskin_helgrind.so (0xB025D000) ==3242== Reading syms from /usr/lib/valgrind/stage2 (0xB8000000) ==3242== Reading suppressions file: ./only.supp ==3242== Reading suppressions file: /usr/lib/valgrind/default.supp ==3242== REDIRECT soname:libc.so.6(__GI___errno_location) to soname:libpthread.so.0(__errno_location) ==3242== REDIRECT soname:libc.so.6(__errno_location) to soname:libpthread.so.0(__errno_location) ==3242== REDIRECT soname:libc.so.6(__GI___h_errno_location) to soname:libpthread.so.0(__h_errno_location) ==3242== REDIRECT soname:libc.so.6(__h_errno_location) to soname:libpthread.so.0(__h_errno_location) ==3242== REDIRECT soname:libc.so.6(__GI___res_state) to soname:libpthread.so.0(__res_state) ==3242== REDIRECT soname:libc.so.6(__res_state) to soname:libpthread.so.0(__res_state) ==3242== REDIRECT soname:libc.so.6(stpcpy) to *vgpreload_memcheck.so*(stpcpy) ==3242== REDIRECT soname:libc.so.6(strnlen) to *vgpreload_memcheck.so*(strnlen) ==3242== REDIRECT soname:ld-linux.so.2(stpcpy) to *vgpreload_memcheck.so*(stpcpy) ==3242== REDIRECT soname:ld-linux.so.2(strchr) to *vgpreload_memcheck.so*(strchr) ==3242== ==3242== Reading syms from /usr/lib/valgrind/vg_inject.so (0x3F01A000) ==3242== Reading syms from /usr/lib/valgrind/vgpreload_helgrind.so (0x3F01F000) ==3242== Reading syms from /usr/lib/libgtkmm-2.0.so.1.5.10 (0x3F033000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgdkmm-2.0.so.1.5.10 (0x3F250000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libatkmm-1.0.so.1.5.10 (0x3F292000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgtk-x11-2.0.so.0.400.3 (0x3F2CC000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libpangomm-1.0.so.1.5.10 (0x3F5A0000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libglibmm-2.0.so.1.5.10 (0x3F5C6000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libsigc-1.2.so.5.0.5 (0x3F60E000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgdk-x11-2.0.so.0.400.3 (0x3F617000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libatk-1.0.so.0.600.1 (0x3F689000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgdk_pixbuf-2.0.so.0.400.3 (0x3F6A5000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libpangoxft-1.0.so.0.399.1 (0x3F6BB000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libpangox-1.0.so.0.399.1 (0x3F6C3000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libpango-1.0.so.0.399.1 (0x3F6D0000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgobject-2.0.so.0.400.2 (0x3F706000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgmodule-2.0.so.0.400.2 (0x3F741000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libdl-2.3.2.so (0x3F746000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libglib-2.0.so.0.400.2 (0x3F74A000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libgthread-2.0.so.0.400.2 (0x3F7CB000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libstdc++.so.5.0.6 (0x3F7D1000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libm-2.3.2.so (0x3F88B000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libgcc_s.so.1 (0x3F8AE000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/valgrind/libpthread.so (0x3F8B7000) ==3242== Reading syms from /lib/libc-2.3.2.so (0x3F8E8000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/X11R6/lib/libX11.so.6.2 (0x3FA1E000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/X11R6/lib/libXrandr.so.2.0 (0x3FAE6000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/X11R6/lib/libXi.so.6.0 (0x3FAEB000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/X11R6/lib/libXext.so.6.4 (0x3FAF4000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libXft.so.2.1.1 (0x3FB03000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libfreetype.so.6.3.5 (0x3FB18000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libz.so.1.2.1.1 (0x3FB86000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libfontconfig.so.1.0.4 (0x3FB98000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libXcursor.so.1.0.2 (0x3FBC0000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libXrender.so.1.2.2 (0x3FBCA000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libpangoft2-1.0.so.0.399.1 (0x3FBD5000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/libexpat.so.1.0.0 (0x3FBFB000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== TRANSLATE: 0x3F8FDFC0 redirected to 0x3F8BF303 ==3242== warning: Valgrind's pthread_getschedparam is incomplete ==3242== your program may misbehave as a result ==3242== Reading syms from /usr/X11R6/lib/X11/locale/lib/common/xlcDef.so.2 (0x3F026000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libnss_compat-2.3.2.so (0x3F02A000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libnsl-2.3.2.so (0x3FD2E000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libnss_nis-2.3.2.so (0x3FD44000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libnss_files-2.3.2.so (0x3FD4E000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== TRANSLATE: 0x3F9CEBF0 redirected to 0x3F8BF5CD ==3242== Reading syms from /lib/libnss_dns-2.3.2.so (0x3FD58000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /lib/libresolv-2.3.2.so (0x3FD5D000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/gconv/ISO8859-1.so (0x3FD1F000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/gtk-2.0/2.4.0/engines/libthinice.so (0x3FD23000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/gtk-2.0/2.4.0/engines/libredmond95.so (0x3FD70000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Reading syms from /usr/lib/pango/1.4.0/modules/pango-basic-fc.so (0x3FD75000) ==3242== object doesn't have a symbol table ==3242== object doesn't have any debug info ==3242== Mutex 0x3FEA92DC locked in inconsistent order ==3242== at 0x3F8BCDBF: pthread_mutex_lock (vg_libpthread.c:1160) ==3242== by 0x80D7EDA: jmutex::jmutex(pthread_mutex_t*) (jmutex.h:15) ==3242== by 0x80D7319: CmdReq::client(char**, int, int, int) (cmdreq.cpp:577) ==3242== by 0x80D7921: CmdReq::CmdReq(char*, char*, char*, int, int, int) (cmdreq.cpp:700) ==3242== while holding locks 0x3FEA92DC ==3242== 0x3FEA92DC last locked at ==3242== at 0x3F8BCDBF: pthread_mutex_lock (vg_libpthread.c:1160) ==3242== by 0x80D7EDA: jmutex::jmutex(pthread_mutex_t*) (jmutex.h:15) ==3242== by 0x80D77B7: CmdReq::CmdReq(char*, char*, char*, int, int, int) (cmdreq.cpp:678) ==3242== by 0x806968B: main (RXRControlPanel.cc:147) ==3242== while depending on locks ==3242== ==3242== ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ---- { <insert a suppression name here> ==3242== (tool does not allow error to be suppressed) ==3242== ==3242== Mutex problem at 0x3FEA92DC trying to take lock we already hold ==3242== at 0x3F8BCDBF: pthread_mutex_lock (vg_libpthread.c:1160) ==3242== by 0x80D7EDA: jmutex::jmutex(pthread_mutex_t*) (jmutex.h:15) ==3242== by 0x80D7319: CmdReq::client(char**, int, int, int) (cmdreq.cpp:577) ==3242== by 0x80D7921: CmdReq::CmdReq(char*, char*, char*, int, int, int) (cmdreq.cpp:700) ==3242== last touched by thread 1 ==3242== at 0x3F8BCDBF: pthread_mutex_lock (vg_libpthread.c:1160) ==3242== by 0x80D7EDA: jmutex::jmutex(pthread_mutex_t*) (jmutex.h:15) ==3242== by 0x80D77B7: CmdReq::CmdReq(char*, char*, char*, int, int, int) (cmdreq.cpp:678) ==3242== by 0x806968B: main (RXRControlPanel.cc:147) ==3242== Address 0x3FEA92DC is 52 bytes inside a block of size 8332 alloc'd by thread 1 ==3242== at 0x3F020A35: operator new(unsigned) (vg_replace_malloc.c:107) ==3242== by 0x8069654: main (RXRControlPanel.cc:147) ==3242== ==3242== ---- Print suppression ? --- [Return/N/n/Y/y/C/c] ---- { <insert a suppression name here> ==3242== (tool does not allow error to be suppressed) Helgrind: the `impossible' happened: core should have checked this Basic block ctr is approximately 40150000 ==3242== at 0xB802FB60: vgPlain_core_panic (vg_mylibc.c:1230) ==3242== by 0xB802FB5F: panic (vg_mylibc.c:1226) ==3242== by 0xB802FBA3: vgPlain_skin_panic (vg_mylibc.c:1236) ==3242== by 0xB0261B1B: set_mutex_state (hg_main.c:1541) sched status: Thread 1: status = Runnable, associated_mx = 0x0, associated_cv = 0x0 ==3242== at 0x3F8BCDBF: pthread_mutex_lock (vg_libpthread.c:1160) ==3242== by 0x80D7EDA: jmutex::jmutex(pthread_mutex_t*) (jmutex.h:15) ==3242== by 0x80D7319: CmdReq::client(char**, int, int, int) (cmdreq.cpp:577) ==3242== by 0x80D7921: CmdReq::CmdReq(char*, char*, char*, int, int, int) (cmdreq.cpp:700) Note: see also the FAQ.txt in the source distribution. It contains workarounds to several common problems. If that doesn't help, please report this bug to: valgrind.kde.org In the bug report, send all the above text, the valgrind version, and what Linux distro you are using. Thanks. </ valgrind output