On Sat, Sep 18, 2004 at 06:41:25PM -0400, Derek Atkins wrote:
> Chris Shoemaker <[EMAIL PROTECTED]> writes:
> 
> > Later, I'll rerun with larger --num-callers.
> >
> > Oddly, it doesn't SEGV under valgrind.  Is that normal?
> 
> Yes.  Valgrind is going to keep the memory alive so it wont segv...
> But yes, this is definitely a double-free.  Most likely there's two
> hooks that destroy the object, one the gtk_container and the other is
> some other free-hook.  Increasing the --num-callers would definitely
> help.

Which gives:

<< snipped a bunch of earlier, unrelated (I believe) errors >>
==7799== Use of uninitialised value of size 4
==7799==    at 0x1BCDF3F2: g_hash_table_lookup (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BE61084: qof_collection_lookup_entity (qofid.c:210)
==7799==    by 0x1BE3973B: gnc_budget_lookup (gnc-budget.c:511)
==7799==    by 0x1C755A1D: gnc_budget_list_tree_model_event_handler 
(gnc-budget-list-tree-model.c:502)
==7799==    by 0x1BE4D45F: gnc_engine_generate_event_internal (gnc-event.c:188)
==7799==    by 0x1BE4D4C9: gnc_engine_gen_event (gnc-event.c:211)
==7799==    by 0x1BE38D36: gnc_budget_new (gnc-budget.c:89)
==7799==    by 0x1BD814CB: create_budget_druid (druid-budget-create.c:259)
==7799==    by 0x1BD81919: gnc_budget_druid_create (druid-budget-create.c:323)
==7799==    by 0x1BD689B1: new_button_clicked (dialog-budget-list.c:163)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7C24: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C363214: gtk_button_clicked (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C36422A: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA744D: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C363164: gtk_button_released (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C3640AA: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C420663: _gtk_marshal_BOOLEAN__BOXED (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7654: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA69BD: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
Creating dummy category.  Budget 0x1dc03450
Adding inflow category...
Adding outflow category...
NumCols: 8
Creating new Category... Budget: 0x1dc03450
 
(gnucash:7799): Gtk-CRITICAL **: file gtkentry.c: line 3643 (gtk_entry_set_text): 
assertion `text != NULL' failed
 
(gnucash:7799): Gtk-CRITICAL **: file gtkentry.c: line 3643 (gtk_entry_set_text): 
assertion `text != NULL' failed
Related Accouts: 0
 
(gnucash:7799): GLib-GObject-WARNING **: invalid cast from `GncTreeModelAccount' to 
`GtkTreeModelSort'
 
(gnucash:7799): Gtk-CRITICAL **: file gtktreemodelsort.c: line 2016 
(gtk_tree_model_sort_get_model): assertion `GTK_IS_TREE_MODEL_SORT (tree_model)' failed

==7799==
==7799== Invalid read of size 4
==7799==    at 0x1C523312: gtk_widget_get_toplevel (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C522474: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C5225E4: gtk_widget_has_screen (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C3BAE64: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCECCF2: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCE9931: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEAA27: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEAD5F: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEB3A2: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1C41D212: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BDA603E: gnc_ui_start_event_loop (top-level.c:514)
==7799==    by 0x1BC7BBFF: gw__tmp791_gnc_ui_start_event_loop_wrapper (gw-gnc.c:280)
==7799==    by 0x1B93340A: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931F07: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931F07: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931E85: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B93546A: scm_i_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B935509: scm_primitive_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B9355FE: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B92B4BA: scm_internal_dynamic_wind (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B93566D: scm_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B962576: scm_shell (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B949537: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B9494FE: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B94920A: scm_boot_guile (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x804898B: main (in /usr/bin/guile-1.6)
==7799==  Address 0x1DF10338 is 56 bytes inside a block of size 100 free'd
==7799==    at 0x1B907460: free (vg_replace_malloc.c:153)
==7799==    by 0x1BCF02A3: g_free (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCAD13A: g_type_free_instance (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC963B0: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC9651E: g_object_run_dispose (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D238: gtk_object_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C51C6E4: gtk_widget_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C361CD4: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39C9CD: gtk_container_foreach (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39B9CD: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7845: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D304: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C52437E: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BC96516: g_object_run_dispose (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D238: gtk_object_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C51C6E4: gtk_widget_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C361CD4: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39C9CD: gtk_container_foreach (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39B9CD: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7845: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==
==7799== Invalid read of size 1
==7799==    at 0x1C522475: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C5225E4: gtk_widget_has_screen (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C3BAE64: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCECCF2: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCE9931: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEAA27: g_main_context_dispatch (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEAD5F: (within /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCEB3A2: g_main_loop_run (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1C41D212: gtk_main (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BDA603E: gnc_ui_start_event_loop (top-level.c:514)
==7799==    by 0x1BC7BBFF: gw__tmp791_gnc_ui_start_event_loop_wrapper (gw-gnc.c:280)
==7799==    by 0x1B93340A: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931F07: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931F07: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B931E85: scm_ceval (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B93546A: scm_i_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B935509: scm_primitive_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B9355FE: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B92B4BA: scm_internal_dynamic_wind (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B93566D: scm_eval_x (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B962576: scm_shell (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B949537: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B9494FE: (within /usr/lib/libguile.so.12.3.0)
==7799==    by 0x1B94920A: scm_boot_guile (in /usr/lib/libguile.so.12.3.0)
==7799==    by 0x804898B: main (in /usr/bin/guile-1.6)
==7799==  Address 0x1DF1030C is 12 bytes inside a block of size 100 free'd
==7799==    at 0x1B907460: free (vg_replace_malloc.c:153)
==7799==    by 0x1BCF02A3: g_free (in /usr/lib/libglib-2.0.so.0.400.6)
==7799==    by 0x1BCAD13A: g_type_free_instance (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC963B0: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC9651E: g_object_run_dispose (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D238: gtk_object_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C51C6E4: gtk_widget_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C361CD4: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39C9CD: gtk_container_foreach (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39B9CD: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7845: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D304: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C52437E: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BC96516: g_object_run_dispose (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1C43D238: gtk_object_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C51C6E4: gtk_widget_destroy (in /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C361CD4: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39C9CD: gtk_container_foreach (in 
/usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1C39B9CD: (within /usr/lib/libgtk-x11-2.0.so.0.400.9)
==7799==    by 0x1BCA8120: g_cclosure_marshal_VOID__VOID (in 
/usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93FB6: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BC93C1F: g_closure_invoke (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA7845: (within /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6BE6: g_signal_emit_valist (in /usr/lib/libgobject-2.0.so.0.400.6)
==7799==    by 0x1BCA6EE3: g_signal_emit (in /usr/lib/libgobject-2.0.so.0.400.6)


So, it seems that free of free'd may be the gtk_container's
self-destruction.  What's the next step?  Figure out exactly which
object is getting destroyed?  It's likely something in the "modify
category dialog" since this crash happens when I close that dialog.  I
suppose I should be searching for any use of a free-hook.  But I don't
know exactly how.  Any hints?

-chris
_______________________________________________
gnucash-devel mailing list
[EMAIL PROTECTED]
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to