Re: gtkmm errors



On Thu, 03 Aug 2006 22:07:16 -0400, Amadeus W. M. wrote:

> I recently installed FC5, and I tested my gtkmm programs that I 
> had running without errors in FC4. Now some of them segfault 
> upon exit. I ran them in valgrind, and I got some errors that
> happen before I get to do anything else. So wrote the simplest
> gtkmm main, to see if I still get the errors:
> 
> #include <iostream>
> #include <cstdlib>
> 
> #include <gtkmm/main.h>
> 
> using namespace std;
> 
> int main(int argc, char * argv[])
> {
> 
>     Gtk::Main m(&argc, &argv);
> 
>     return 0;
>> [quoted text muted]
> 
> 
> 
> and I compiled it like so:
> 
> g++ -g -Wall -o main `pkg-config gtkmm-2.4 --cflags --libs` main.C
> 
> 
> It runs without crashing (perhaps because it is so simple), but
> valgrind still reports 2 errors (that probably make my other
> programs crash). See below.
> 
> This is what I have now:
> 
> gtkmm24-devel-2.8.8-1.fc5
> gtkmm24-2.8.8-1.fc5
> 
> and
> glademm-2.6.0-SNAP            (not used for the above main.C).
> libglademm24-2.6.2-1
> libglademm24-devel-2.6.2-1
> 
> 
> Please help, I'm begining to panic. Below is the output of
> valgrind main:
> 
> 
> ==6042== Memcheck, a memory error detector.
> ==6042== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
> ==6042== Using LibVEX rev 1471, a library for dynamic binary translation.
> ==6042== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
> ==6042== Using valgrind-3.1.0, a dynamic binary instrumentation framework.
> ==6042== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
> ==6042== For more details, rerun with: -v
> ==6042==
> --6042-- WARNING: unhandled syscall: 311
> --6042-- You may be able to write your own handler.
> --6042-- Read the file README_MISSING_SYSCALL_OR_IOCTL.
> ==6042== Syscall param write(buf) points to uninitialised byte(s)
> ==6042==    at 0x796023: __write_nocancel (in /lib/libc-2.4.so)
> ==6042==    by 0x89250E: _X11TransWrite (in /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0x898436: (within /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0x89853A: _XReply (in /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0x87E351: XInternAtom (in /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0x891FEB: XSetWMProperties (in /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0xC69287: (within /usr/lib/libgdk-x11-2.0.so.0.800.20)
> ==6042==    by 0xC6B9E3: gdk_window_new (in /usr/lib/libgdk-x11-2.0.so.0.800.20)==6042==    by 0xC48F4C: gdk_display_open (in /usr/lib/libgdk-x11-2.0.so.0.800.20)
> ==6042==    by 0xC27AEE: gdk_display_open_default_libgtk_only (in /usr/lib/libgdk-x11-2.0.so.0.800.20)
> ==6042==    by 0x21FBFE: gtk_init_check (in /usr/lib/libgtk-x11-2.0.so.0.800.20)==6042==    by 0x21FC33: gtk_init (in /usr/lib/libgtk-x11-2.0.so.0.800.20)
> ==6042==  Address 0x4078358 is 128 bytes inside a block of size 16,384 alloc'd
> ==6042==    at 0x40045EB: calloc (vg_replace_malloc.c:279)
> ==6042==    by 0x8831A6: XOpenDisplay (in /usr/lib/libX11.so.6.2.0)
> ==6042==    by 0xC48E11: gdk_display_open (in /usr/lib/libgdk-x11-2.0.so.0.800.20)
> ==6042==    by 0xC27AEE: gdk_display_open_default_libgtk_only (in /usr/lib/libgdk-x11-2.0.so.0.800.20)
> ==6042==    by 0x21FBFE: gtk_init_check (in /usr/lib/libgtk-x11-2.0.so.0.800.20)==6042==    by 0x21FC33: gtk_init (in /usr/lib/libgtk-x11-2.0.so.0.800.20)
> ==6042==    by 0x79557B6: Gtk::Main::init(int*, char***, bool) (in /usr/lib/libgtkmm-2.4.so.1.0.29)
> ==6042==    by 0x795583B: Gtk::Main::Main(int*, char***, bool) (in /usr/lib/libgtkmm-2.4.so.1.0.29)
> ==6042==    by 0x80487F5: main (main.C:11)
> GTK Accessibility Module initialized
> ==6042==
> ==6042== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 72 from 1)
> ==6042== malloc/free: in use at exit: 293,407 bytes in 5,869 blocks.
> ==6042== malloc/free: 8,492 allocs, 2,623 frees, 654,905 bytes allocated.
> ==6042== For counts of detected errors, rerun with: -v
> ==6042== searching for pointers to 5,869 not-freed blocks.
> ==6042== checked 1,100,580 bytes.
> ==6042==
> ==6042== LEAK SUMMARY:
> ==6042==    definitely lost: 2,040 bytes in 1 blocks.
> ==6042==      possibly lost: 25,415 bytes in 75 blocks.
> ==6042==    still reachable: 265,952 bytes in 5,793 blocks.
> ==6042==         suppressed: 0 bytes in 0 blocks.
> ==6042== Use --leak-check=full to see details of leaked memory.

Follow-up on this. With help from the valgrind list, 
I managed to get rid of the 

Warning: unhandled syscall: 311

That's due to valgrind-3.1.x which is missing a wrapper for
the system call with number 311: set_robust_lists, which has
to do with futexes and threads. The missing wrapper is implemented
in valgrind-3.2.0 and the warning disappears.

However, the two errors reported by valgrind on the trivial
gtkmm main remain, and I imagine they must be in gtkmm/gtk.
Could any of the developers look into this please?

I'm running gtkmm24-2.8.8-1.fc5. If these errors have been fixed
in cvs, I'd be happy to try, but I'd like to know first.

Thanks.





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]