Bug 101207 - Helgrind: The impossible happened core should have checked this
Summary: Helgrind: The impossible happened core should have checked this
Status: RESOLVED WORKSFORME
Alias: None
Product: valgrind
Classification: Developer tools
Component: helgrind (other bugs)
Version First Reported In: 2.1.1
Platform: Debian stable Linux
: NOR crash
Target Milestone: ---
Assignee: Julian Seward
URL:
Keywords: investigated, triaged
Depends on:
Blocks:
 
Reported: 2005-03-10 00:32 UTC by Bill Drissel
Modified: 2018-11-12 16:01 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bill Drissel 2005-03-10 00:32:48 UTC
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
Comment 1 Nicholas Nethercote 2009-07-02 06:04:27 UTC
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.)
Comment 2 Andrew Crouthamel 2018-09-19 04:31:36 UTC
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!
Comment 3 Bug Janitor Service 2018-11-12 16:01:23 UTC
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!