Re: Strange glibc detected invalid pointer with gtk_entry



On Tuesday 05 July 2011 14:24:48 Herbert Gasiorowski wrote:
I have an issue with nearly all gtk+ programs: since about one week the programs 
crash at startup with some fault like this:

*** glibc detected *** ./gtk-tab2: munmap_chunk(): invalid pointer: 
0x0000000001aa8eb0 ***
======= Backtrace: =========
/lib64/libc.so.6[0x365a47703a]
/lib64/libglib-2.0.so.0(g_free+0x23)[0x365c449743]

But if I start the program via ssh it runs as expected:
    ssh -X $HOSTNAME myprogram
AND if I link without -lmcheck it is ok too ...

I deleted all code which did not affect this issue:
It is not much more than another Hello World example but using gtk_entry to 
display the text (#if 1):

Fedora 15 and gtk3-3.0.11-1.fc15.x86_64
(gtk2 will fail too)

Can someone tell me what I should do next?

==================================================================================
/* test with
  *  gcc -Wall -g -o gtk-tab gtk-tab.c -lmcheck `pkg-config --cflags --libs 
gtk+-3.0` && ./gtk-tab
  */

#include <stdlib.h>
#include <string.h>
#include <gtk/gtk.h>

#define SUMMARY "gtk test"
#define TRACE(l,fmt,args...) fprintf(stderr,"#%03d#%9.9s:%3d# " 
fmt"\n",l,__FILE__,__LINE__,##args)

int main( int argc, char **argv ) {
      GtkWidget *window;
      GtkWidget *value;
      TRACE(9,"gtk init");
      gtk_init (&argc, &argv);

      TRACE(12,"gtk create a new window");
      window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
      gtk_window_set_title (GTK_WINDOW (window), SUMMARY);
      g_signal_connect (G_OBJECT (window), "destroy",
                      G_CALLBACK (gtk_main_quit), NULL);
      
      TRACE(12,"Create the text");
#if 1
      value = gtk_entry_new();
      gtk_entry_set_text( GTK_ENTRY(value), "test 123" );
#else
      value = gtk_label_new("test 123");
#endif

      gtk_container_add (GTK_CONTAINER (window), value);

      TRACE(12,"gtk show all");
      gtk_widget_show_all (window);
      TRACE(11,"gtk loop: start");
      gtk_main ();
      TRACE(11,"gtk loop: done");
      return 0;
}
==================================================================================

I in the past used this function this insert text in entry widgets, don't know if it helps in your case:

void my_gtk_entry_set_text(GtkEntry *entry, char *data)
{
        char *tmp;

        if (!data) data = "";

        if (g_utf8_validate(data, -1, NULL) != TRUE) {
                tmp = g_locale_to_utf8(data, -1, NULL, NULL, NULL); 
                gtk_entry_set_text(entry, tmp);
                xfree(&tmp);
        } else {
                gtk_entry_set_text(entry, data);
        }
}

Hope this helps.

ZZ



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