Crash in dialog_file_access.c (was Re: Trouble compiling)

Sebastian Held sebastian.held at gmx.de
Sun Apr 5 12:43:39 EDT 2009


got it.

valgrind report for save as command:
==3984== Conditional jump or move depends on uninitialised value(s)
==3984==    at 0x4CDA9D2: g_object_connect (gobject.c:1345)
==3984==    by 0x422B67F: gnc_ui_file_access (dialog-file-access.c:234)
==3984==    by 0x41469D7: gnc_main_window_cmd_file_save_as 
(gnc-plugin-basic-commands.c:389)
==3984==    by 0x4CE52A3: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
==3984==    by 0x4CD7B5A: g_closure_invoke (gclosure.c:490)
==3984==    by 0x4CEB0AC: signal_emit_unlocked_R (gsignal.c:2440)
==3984==    by 0x4CEC5DD: g_signal_emit_valist (gsignal.c:2199)
==3984==    by 0x4CECA25: g_signal_emit (gsignal.c:2243)
==3984==    by 0x4ED64B4: (within /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4ED7473: gtk_action_activate 
(in /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4CE52A3: g_cclosure_marshal_VOID__VOID (gmarshal.c:77)
==3984==    by 0x4CD7B5A: g_closure_invoke (gclosure.c:490)
==3984==    by 0x4CEB0AC: signal_emit_unlocked_R (gsignal.c:2440)
==3984==    by 0x4CEC5DD: g_signal_emit_valist (gsignal.c:2199)
==3984==    by 0x4CECA25: g_signal_emit (gsignal.c:2243)
==3984==    by 0x50FD9D6: gtk_widget_activate 
(in /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4FDD77F: gtk_menu_shell_activate_item 
(in /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4FDF57C: (within /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4FD615A: (within /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4FCFDE5: (within /usr/lib/libgtk-x11-2.0.so.0.1200.9)
==3984==    by 0x4CD62B8: g_type_class_meta_marshal (gclosure.c:567)
==3984==    by 0x4CD7B5A: g_closure_invoke (gclosure.c:490)
==3984==    by 0x4CEAD54: signal_emit_unlocked_R (gsignal.c:2478)
==3984==    by 0x4CEC467: g_signal_emit_valist (gsignal.c:2209)
==3984==    by 0x4CECA25: g_signal_emit (gsignal.c:2243)
--3984-- Reading syms from /usr/lib/gtk-2.0/2.10.0/immodules/im-xim.so 
(0xc387000)
--3984--    object doesn't have a symbol table


gobject.c:

gpointer
g_object_connect (gpointer     _object,
		  const gchar *signal_spec,
		  ...)
{
  GObject *object = _object;
  va_list var_args;

  g_return_val_if_fail (G_IS_OBJECT (object), NULL);
  g_return_val_if_fail (object->ref_count > 0, object);

  va_start (var_args, signal_spec);
1345: -->  while (signal_spec)
    {



Any thoughts on this?
Sebastian


Am Sonntag, 5. April 2009 11:40:31 schrieb Sebastian Held:
> Great - with dubbing symbols, the app does not crash anymore.
> This certainly has to do with dangling pointers uninitialized vars, ...
> valgrind will be your friend, but I cannot get gnucash to run under
> supervision of valgrind. It aborts with SIGABRT in the startup phase.
>
> The save as function needs to be analyzed carefully.
>
> Sebastian
>
> Am Sonntag, 5. April 2009 10:46:33 schrieb Sebastian Held:
> > Finally I got my suse box to compile trunk, and voila:
> > trunk (rev18013) crashes even on linux,  but not the first time you open
> > save as...
> > Here is how to reproduce the crash:
> > - trigger save as
> > - press cancel
> > - trigger save as again -> crashes
> >
> > I'm currently recompiling trunk with debuging symbols enabled to get a
> > meaningful backtrace.
> >
> > Sebastian
> >
> > Am Sonntag, 5. April 2009 00:40:56 schrieb Phil Longstaff:
> > > Because it's a variable on the stack so its value is undefined before
> > > it is set.
> > >
> > > Phil
> > >
> > > On April 4, 2009 05:34:39 pm David Reiser wrote:
> > > > So even though I have 3 dbd files in the location specified in
> > > > configure with --with-dbi-dbd-dir=, my list is still null because
> > > > gnucash hasn't asked for the registered backends yet? If so, why
> > > > would Sebastian's example show a non-null list with a breakpoint at
> > > > the same location?
> > > >
> > > > Dave
> > > >
> > > > On Apr 4, 2009, at 4:38 PM, Phil Longstaff wrote:
> > > > > List being null isn't the problem.
> > > > >
> > > > > "list" isn't used until after that point in the code (it asks qof
> > > > > for the list of registered backends and doesn't add combobox
> > > > > entries for "sqlite3", "mysql" or "pgsql" if there isn't a
> > > > > registered backend, and the libdbi backend doesn't register a
> > > > > backend if the dbd file isn't present).
> > > > >
> > > > >
> > > > > ________________________________
> > > > > From: David Reiser <dbreiser at earthlink.net>
> > > > > To: Phil Longstaff <plongstaff at rogers.com>
> > > > > Cc: Sebastian Held <sebastian.held at gmx.de>; Gnucash list
> > > > > <gnucash-devel at lists.gnucash.org
> > > > >
> > > > > Sent: Saturday, April 4, 2009 4:18:49 PM
> > > > > Subject: Re: Crash in dialog_file_access.c (was Re: Trouble
> > > > > compiling)
> > > > >
> > > > >
> > > > >
> > > > > [...]________________________________
> > > > >
> > > > > From: Sebastian Held <sebastian.held at gmx.de>
> > > > >
> > > > > To: Phil Longstaff <plongstaff at rogers.com>
> > > > >
> > > > > Cc: David Reiser <dbreiser at earthlink.net>; Derek Atkins
> > > > > <warlord at MIT.EDU
> > > > >
> > > > > >; Gnucash list <gnucash-devel at lists.gnucash.org>
> > > > >
> > > > > Sent: Thursday, April 2, 2009 3:19:10 PM
> > > > >
> > > > > Subject: Re: Trouble compiling
> > > > >
> > > > >
> > > > > Same (rev18012) here on windows:
> > > > >
> > > > >
> > > > > 63A4A37E  libgobject-2.0-0.dll:63A4A37E  g_object_connect
> > > > >
> > > > > 64F0BAE3  libgncmod-gnome-utils.dll:64F0BAE3  gnc_ui_file_access
> > > > >
> > > > > dialog-file-access.c:234
> > > > >
> > > > > 64F0BC72  libgncmod-gnome-utils.dll:64F0BC72
> > > > >
> > > > > gnc_ui_file_access_for_save_as  dialog-file-access.c:275
> > > > >
> > > > > 6E36706F  libgnc-gnome-0.dll:6E36706F
> > > > >
> > > > > gnc_main_window_cmd_file_save_as  gnc-plugin-basic-commands.c:393
> > > > >
> > > > >
> > > > > (gdb) break dialog-file-access.c:234
> > > > >
> > > > > ...
> > > > >
> > > > > (gdb) list 234
> > > > >
> > > > > 234             g_object_connect( G_OBJECT(faw->cb_uri_type),
> > > > >
> > > > > "signal::changed", cb_uri_type_changed_cb, NULL );
> > > > >
> > > > > (gdb) info local
> > > > >
> > > > > faw = (FileAccessWindow *) 0x1e3a6c0
> > > > >
> > > > > xml = (GladeXML *) 0x16aae00
> > > > >
> > > > > box = (GtkWidget *) 0x65c41273
> > > > >
> > > > > ds_node = (GList *) 0x1296850
> > > > >
> > > > > op = (GtkButton *) 0x3eb4f60
> > > > >
> > > > > align = (GtkWidget *) 0x3eafd68
> > > > >
> > > > > fileChooser = (GtkFileChooserWidget *) 0x3ec4360
> > > > >
> > > > > fileChooserAction = GTK_FILE_CHOOSER_ACTION_SAVE
> > > > >
> > > > > list = (GList *) 0x1d5c7a0
> > > > >
> > > > > node = (GList *) 0x22f318
> > > > >
> > > > > uri_type_container = (GtkWidget *) 0x3e9f918
> > > > >
> > > > > __PRETTY_FUNCTION__ = "gnc_ui_file_access"
> > > > >
> > > > > (gdb) p *faw
> > > > >
> > > > > $2 = {type = 1, dialog = 0x3ec7008, frame_file = 0x3eafd00,
> > > > >
> > > > > frame_database = 0x3eafb60, fileChooser = 0x3ec4360,
> > > > >
> > > > > cb_uri_type = 0x3ed7010, tf_host = 0x3eaa0c0, tf_database =
> > > > >
> > > > > 0x3eaa170,
> > > > >
> > > > > tf_username = 0x3eaa220, tf_password = 0x3eaa2d0}
> > > > >
> > > > > (gdb) p cb_uri_type_changed_cb
> > > > >
> > > > > $3 = {void (GtkComboBox *)} 0x64f0b688 <cb_uri_type_changed_cb>
> > > > >
> > > > >
> > > > > From gdb in my crash, I get:
> > > > >
> > > > > Breakpoint 1, gnc_ui_file_access (type=1) at
> > > > > dialog-file-access.c:234 234g_object_connect(
> > > > > G_OBJECT(faw->cb_uri_type), "signal::changed",
> > > > > cb_uri_type_changed_cb, NULL );
> > > > > (gdb) info local
> > > > > faw = (FileAccessWindow *) 0x5077650
> > > > > xml = (GladeXML *) 0x59d2c48
> > > > > box = (GtkWidget *) 0x1b1f7d0
> > > > > ds_node = (GList *) 0x1897e68
> > > > > op = (GtkButton *) 0x5c09078
> > > > > align = (GtkWidget *) 0x5c0a958
> > > > > fileChooser = (GtkFileChooserWidget *) 0x29b4110
> > > > > fileChooserAction = GTK_FILE_CHOOSER_ACTION_SAVE
> > > > > list = (GList *) 0x0
> > > > > node = (GList *) 0xbfffd800
> > > > > uri_type_container = (GtkWidget *) 0x5c060d8
> > > > > __PRETTY_FUNCTION__ = "gnc_ui_file_access"
> > > > >
> > > > >
> > > > > list is NULL, so that's probably the cause of my crash. Any
> > > > > suggestions on changes I can try to work on the lack of "list"?
> > > > >
> > > > > I have all three libdbi drivers installed, and configure reports
> > > > > that gnucash is configured for the dbi backend.
> > > > > Dave
> > > > >
> > > > > --
> > > > > David Reiser
> > > > > dbreiser at earthlink.net
> > > > > _______________________________________________
> > > > > gnucash-devel mailing list
> > > > > gnucash-devel at gnucash.org
> > > > > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> > > >
> > > > --
> > > > David Reiser
> > > > dbreiser at earthlink.net
> > >
> > > _______________________________________________
> > > gnucash-devel mailing list
> > > gnucash-devel at gnucash.org
> > > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
> >
> > _______________________________________________
> > gnucash-devel mailing list
> > gnucash-devel at gnucash.org
> > https://lists.gnucash.org/mailman/listinfo/gnucash-devel
>
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel




More information about the gnucash-devel mailing list