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