Hi,

I'm quite new to gtk, and I'm writing a application for school.
When I click on an Item in my menu bar an then click a couple of times 
on Ok (in  the following dialogs) I always get this error in the end:

    /(gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed/

But it gets worse, every now and then I get a segmentation error  
instead of these warnings.
I searched google and found that it had to with a double free() of some 
object or a wrong version of audacity or wxwidgets.

I can't find a way to fix this problem and it's really annoying me.

this is some output I got when I put #define G_THREADS_ENABLED in my 
main gtk file:

    /wordt nu weergegeven.
    1

    (gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
    2

    (gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

    (gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed

    (gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
    1

    (gtkP:5837): GLib-GObject-WARNING **: instance of invalid
    non-instantiatable type `(null)'

    (gtkP:5837): GLib-GObject-CRITICAL **: g_signal_emit_valist:
    assertion `G_TYPE_CHECK_INSTANCE (instance)' failed
    2
    1
    *** glibc detected *** ./gtkP: malloc(): memory corruption:
    0x08307780 ***
    ======= Backtrace: =========
    /lib/tls/i686/cmov/libc.so.6[0xb76eeef3]
    /lib/tls/i686/cmov/libc.so.6(__libc_malloc+0x7e)[0xb76f060e]
    /lib/tls/i686/cmov/libc.so.6(vasprintf+0x23)[0xb76e57a3]
    /usr/lib/libglib-2.0.so.0(g_vasprintf+0x37)[0xb781f037]
    /usr/lib/libglib-2.0.so.0(g_strdup_vprintf+0x26)[0xb7811026]

     /usr/lib/libglib-2.0.so.0(g_logv+0x2bc)[0xb77fe4fc]
    /usr/lib/libglib-2.0.so.0(g_log+0x29)[0xb77fe749]
    /usr/lib/libgobject-2.0.so.0(g_type_check_instance+0x6c)[0xb788905c]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x25)[0xb7880d85]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb78817e9]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7d02f04]
    /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x49)[0xb787c9d9]
    /usr/lib/libgobject-2.0.so.0[0xb786de49]
    /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x20d)[0xb786f70d]
    /usr/lib/libgobject-2.0.so.0[0xb78808bf]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8c7)[0xb7881627]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb78817e9]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7cebe21]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7de74a1]
    /usr/lib/libgobject-2.0.so.0(g_object_run_dispose+0x50)[0xb7871cc0]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_object_destroy+0x7e)[0xb7cebb2e]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_destroy+0x45)[0xb7de7755]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7c7fa48]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_container_foreach+0x6b)[0xb7c355fb]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7c35f40]
    /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x49)[0xb787c9d9]
    /usr/lib/libgobject-2.0.so.0[0xb786de49]
    /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x20d)[0xb786f70d]
    /usr/lib/libgobject-2.0.so.0[0xb78808bf]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8c7)[0xb7881627]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb78817e9]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7cebe21]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7de74a1]
    /usr/lib/libgobject-2.0.so.0(g_object_run_dispose+0x50)[0xb7871cc0]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_object_destroy+0x7e)[0xb7cebb2e]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_destroy+0x45)[0xb7de7755]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7bfa1b0]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_container_foreach+0x6b)[0xb7c355fb]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7c35f40]
    /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x49)[0xb787c9d9]
    /usr/lib/libgobject-2.0.so.0[0xb786de49]
    /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x20d)[0xb786f70d]
    /usr/lib/libgobject-2.0.so.0[0xb78808bf]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8c7)[0xb7881627]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb78817e9]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7cebe21]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7de74a1]
    /usr/lib/libgobject-2.0.so.0(g_object_run_dispose+0x50)[0xb7871cc0]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_object_destroy+0x7e)[0xb7cebb2e]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_widget_destroy+0x45)[0xb7de7755]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7bf656f]
    /usr/lib/libgtk-x11-2.0.so.0(gtk_container_foreach+0x6b)[0xb7c355fb]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7c35f40]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7df6931]
    /usr/lib/libgobject-2.0.so.0(g_cclosure_marshal_VOID__VOID+0x49)[0xb787c9d9]
    /usr/lib/libgobject-2.0.so.0[0xb786de49]
    /usr/lib/libgobject-2.0.so.0(g_closure_invoke+0x12b)[0xb786f62b]
    /usr/lib/libgobject-2.0.so.0[0xb78808bf]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit_valist+0x8c7)[0xb7881627]
    /usr/lib/libgobject-2.0.so.0(g_signal_emit+0x29)[0xb78817e9]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7cebe21]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7de74a1]
    /usr/lib/libgtk-x11-2.0.so.0[0xb7df3826]
    ======= Memory map: ========
    08048000-08053000 r-xp 00000000 03:04 41991552  
    /home/sibren/humane/project/gtkP
    08053000-08054000 rw-p 0000a000 03:04 41991552  
    /home/sibren/humane/project/gtkP
    08054000-08366000 rw-p 08054000 00:00 0          [heap]
    b6700000-b6721000 rw-p b6700000 00:00 0
    b6721000-b6800000 ---p b6721000 00:00 0
    b688d000-b6898000 r-xp 00000000 03:04 16779197   /lib/libgcc_s.so.1
    b6898000-b6899000 rw-p 0000a000 03:04 16779197   /lib/libgcc_s.so.1
    b68aa000-b6aba000 r--p 00000000 03:04 9318706   
    /usr/share/icons/hicolor/icon-theme.cache
    b6aba000-b7161000 r--p 00000000 03:04 1603758   
    /usr/share/icons/gnomAborted (core dumped)/

and this is a example of  code which produces the output (I guess), for 
example when I access openA() en press the Ok button

    /#include "PopUp.h"
    #include "Tooltips.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <pthread.h>

    gdouble size = 0xFFFFFFF;

    static GtkTooltips *tooltips2;

    struct data
    {
      GtkWidget *dialog;
      short respons;
    };

    typedef struct data dataS;

    static void destroy(GtkWidget *widget, gpointer data);
    static void setResponse(GtkWidget *widget, gpointer data);
    static gboolean delete_event(GtkWidget *widget, GdkEvent *event,
    gpointer data);
    static void warning(GtkWidget *widget, gpointer data);
    static void  makeMessage(GtkWidget *dialog, gchar *img, gchar
    *textB, gchar *event, dataS *resp, GCallback func, gpointer data);
    static void voegtoe(GtkWidget *widget, gpointer data);
    static void verwijder(GtkWidget *widget, gpointer data);
    static void wijzig(GtkWidget *widget, gpointer data);
    static void makeInp(GtkWidget *frame, GtkWidget *fixed, short xOff,
    short yOff, short xL, short yL, char *label, short max);

    void instellingen(GtkWidget *widget, gpointer data);
    GdkColor setColor(guint red, guint green, guint blue);
    void maakLettertype(GtkWidget *fixedContainer);
    void maakBalk(GtkWidget *fixedContainer);
    static void openF(GtkWidget *widget, gpointer data);
    static void openP(GtkWidget *widget, gpointer data);
    static void credit(GtkWidget *widget, gpointer data);
    static void nieuwA(GtkWidget *widget, gpointer data);
    static void openA(GtkWidget *widget, gpointer data);
    static void slaOp(GtkWidget *widget, gpointer data);
    static void slaOpAls(GtkWidget *widget, gpointer data);
    static void setDialog(GtkWidget *dialog, short xSize, short ySize);
    static GSList* makeRadio(GtkWidget *radio, GSList *groep, GtkWidget
    *fixed, char *label, short xOff, short yOff);
    static void makeCheck(char* label, GtkWidget *fixed, short xOff,
    short yOff);
    static void ok(GtkWidget *widget, gpointer data);
    static short annuleren(GtkWidget *widget, gpointer data);

    static void ok(GtkWidget *widget, gpointer data)
    {
      GtkWidget *dialog;
      GtkWidget* fixed;
      GtkWidget* ok;
      dataS resp, resp2;
      gboolean ret;

      dialog = gtk_dialog_new();
      setDialog(dialog, 300, 150);

      resp.dialog = dialog;
      resp.respons = TRUE;
      resp2.dialog = dialog;
      resp2.respons = FALSE;

      fixed = gtk_fixed_new();
     
      makeInp(NULL, fixed, 19, 19, -1, -1, "Dit is slecht een
    demo-versie.\nDeze taak wordt dus niet\necht uitgevoerd.", -1);
      gtk_widget_show(fixed);
      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), fixed,
    TRUE, TRUE, 3);

      /* KNOPPEN AANMAKEN */
      makeMessage(dialog, "gtk-apply", "Ok", "clicked", &resp,
    (GCallback) destroy ,dialog);
      gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);  /*
    seperator afzetten */

      gtk_dialog_response(GTK_DIALOG(data), TRUE);
      gtk_dialog_run(GTK_DIALOG(dialog));
    }

    static short annuleren(GtkWidget *widget, gpointer data)
    {
      return FALSE;
    }

    static void makeCheck(char* label, GtkWidget *fixed, short xOff,
    short yOff)
    {
      GtkWidget *button;

      button = gtk_check_button_new_with_label(label);
      gtk_fixed_put(GTK_FIXED(fixed), button, xOff, yOff); 
      gtk_widget_show(button);
    }

    static GSList* makeRadio(GtkWidget *radio, GSList *groep, GtkWidget
    *fixed, char *label, short xOff, short yOff)
    {
      GSList *list;

      list = NULL;

      if (groep != NULL)
        radio = gtk_radio_button_new_with_label(groep, label);
      else
      {
        radio = gtk_radio_button_new_with_label(NULL, label);
        list = gtk_radio_button_get_group (GTK_RADIO_BUTTON(radio));
      }

      gtk_fixed_put(GTK_FIXED(fixed), radio, xOff, yOff); 
      gtk_widget_show(radio);

      return list;
    }

    static void setDialog(GtkWidget *dialog, short xSize, short ySize)
    {
      gtk_widget_set_usize (GTK_WIDGET(dialog), xSize, ySize);
      gtk_window_set_title (GTK_WINDOW(dialog), "SoCalledAdressBook");
      gtk_container_set_border_width( GTK_CONTAINER (dialog), 10 );
      gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
      gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
      gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
    }

    static void makeMessage(GtkWidget *dialog, gchar *img, gchar *textB,
    gchar *event, dataS *resp, GCallback func, gpointer data)
    {
      GtkWidget *button;
      GtkWidget *imgB;
      GtkWidget *hbox;
      GtkWidget *label;
     
      button = gtk_button_new();
      hbox = gtk_hbox_new (FALSE, 10);
      gtk_widget_show (hbox);
      imgB = gtk_image_new_from_stock (img, GTK_ICON_SIZE_LARGE_TOOLBAR);
      gtk_widget_show (imgB);
      gtk_box_pack_start (GTK_BOX (hbox), imgB, FALSE, FALSE, 0);
      label = gtk_label_new_with_mnemonic (textB);
      gtk_widget_show (label);
      gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0);
      gtk_container_add(GTK_CONTAINER(button), hbox);
      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area),
    button, TRUE, TRUE, 0);
      if (func != NULL)
        g_signal_connect(G_OBJECT(button), event, (GCallback) func,  data);
      gtk_widget_show (button);

    }

    static void makeInp(GtkWidget *frame, GtkWidget *fixed, short xOff,
    short yOff, short xL, short yL, char *label, short max)
    {
      GtkWidget *widget;
     
      if (label != NULL)
        widget = gtk_label_new (label);
      else
        widget = gtk_entry_new_with_max_length(max);
      gtk_fixed_put(GTK_FIXED(fixed), widget, xOff, yOff);

      if (xL > 0)
          gtk_widget_set_usize (widget, xL, yL);
     
      gtk_widget_show(widget);
    }

    static void setResponse(GtkWidget *widget, gpointer data)
    {
      dataS* resp;

      resp = (dataS*) data;
      gtk_dialog_response(GTK_DIALOG(resp->dialog), resp->respons);
    }

    static void openA(GtkWidget *widget, gpointer data)
    {
      GtkWidget *img;
      GtkWidget *dialog;
      GtkWidget *fixed;
      GtkWidget *radio;
      GSList* list;
      dataS resp, resp2;

      dialog = gtk_dialog_new();
      setDialog(dialog, 420, 250);

      resp.dialog = dialog;
      resp.respons = TRUE;

      resp2.dialog = dialog;
      resp2.respons = TRUE;
     
      fixed =  gtk_fixed_new();

      img = gtk_image_new_from_file("adresboek_n2B.jpg");
      gtk_fixed_put(GTK_FIXED(fixed), img, 0, 0);
      gtk_widget_show(img);

      makeInp(NULL, fixed, 0, 81, -1, -1, "Een nieuwe adressenboek
    toevoegen:", -1);
      makeInp(NULL, fixed, 0, 107, -1, -1, "categorie:", -1);

      list = makeRadio(radio, NULL, fixed, "Vrienden", 10, 102);
      makeRadio(radio, list, fixed, "Kennissen", 300, 102);
      makeRadio(radio, list, fixed, "Familie", 200, 102);

      makeInp(NULL, fixed, 0, 137, -1, -1, "Gebruiker:", -1);
      makeCheck("Jef", fixed, 100, 137);
      makeCheck("Jan", fixed, 150, 137);
      makeCheck("Piet", fixed, 200, 137);

      gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), fixed,
    TRUE, TRUE, 3);
      gtk_widget_show(fixed);

      /* KNOPPEN MAKEN */
      makeMessage(dialog, "gtk-apply", "Ok", "clicked", &resp,
    (GCallback)ok, dialog);
      makeMessage(dialog, "gtk-cancel", "Annuleren", "clicked", &resp2,
    (GCallback) setResponse, &resp2);

      gtk_dialog_set_has_separator(GTK_DIALOG(dialog), FALSE);  /*
    seperator afzetten */
      gtk_dialog_run(GTK_DIALOG(dialog));
      gtk_widget_destroy(dialog);
      dialog = NULL;
    }

    void setCallback(GtkWidget *widget, gpointer data, char *keuze)
    {
      /*  tooltips2 = geefToolTips();*/
      switch(keuze[0])
      {
        case '0':
          g_signal_connect(G_OBJECT(widget), "delete_event",
    G_CALLBACK(delete_event), data);
          break;
        case '1':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(delete_event), data);
          break;
        case '2':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(warning), data);
          break;
        case '3':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(progress), data);
          break;
        case '4':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(voegtoe), data);
          break;
        case '5':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(verwijder), data);
          break;
        case '6':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(wijzig), data);
          break;
        case '7':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(instellingen), data);
          break;
        case '8':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(openF), data);
          break;
        case '9':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(credit), data);
          break;
        case 'a':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(nieuwA), data);
          break;
        case 'b':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(openA), data);
          break;
        case 'c':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(slaOp), data);
          break;
        case 'd':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(slaOpAls), data);
          break;
        case 'e':
          g_signal_connect(G_OBJECT(widget), "button_press_event",
    G_CALLBACK(openT), data);
          break;
        default:
          g_print("Nothing to do\n");
      }
    }
    /


Could someone please help me?  I sure hope this is the right mailing list?

Sibren,

_______________________________________________
gtk-app-devel-list mailing list
gtk-app-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/gtk-app-devel-list

Reply via email to