Crash in dialog_file_access.c (was Re: Trouble compiling)
Sebastian Held
sebastian.held at gmx.de
Sun Apr 5 13:58:46 EDT 2009
The SIGABRT is generated within goffice, thus I upgraded to goffice-0.7.4.
This in turn required an update to libgsf. Apparently updating the
latter seems to be sufficient, because on execution, gnucash loads my
system default goffice-0.6, but the new installed libgsf and there was
no SIGABRT anymore.
Phil Longstaff schrieb:
> How did you fix the SIGABRT?
>
> I misread the documentation. I think there needs to be another NULL argument
> at the end of the call to g_object_connect().
>
> Dave, change the line to:
>
> g_object_connect( G_OBJECT(faw->cb_uri_type), "signal::changed",
> cb_uri_type_changed_cb, NULL, NULL );
>
> and see if that fixes the problem.
>
> Phil
>
> On April 5, 2009 12:43:39 pm Sebastian Held wrote:
>
>> 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
>>>
>> _______________________________________________
>> 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
>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sebastian_held.vcf
Type: text/x-vcard
Size: 205 bytes
Desc: not available
URL: <http://lists.gnucash.org/pipermail/gnucash-devel/attachments/20090405/0e982119/attachment.vcf>
More information about the gnucash-devel
mailing list