Mon 05 May 2008 03:41:43 PM UTC, comment #1:
To start, here is a reproduction recipe for this problem that I found to be reliable. Start with any text import data file. On the page that selects delimiters, choose delimiters that causes missing trailing fields on some lines. On the final page, hover the mouse cursor over one of those missing fields and wait for the tool tip to appear. While the tool tip is visible, type Control+A to push the "Apply" button that completes the assistant.
To finish, here is a series of patches that fix this and a couple of other problems. Each patch file begins with an explanation.
(file #15608, file #15609, file #15610)
|
Thu 01 May 2008 09:25:05 AM UTC, original submission:
Information provided by Jason Stover:
...and still crashes on the desktop, right after pressing the final 'Apply' button.
Here is a backtrace from the segfault:
Program received signal SIGSEGV, Segmentation fault.
0x0808c3d7 in parse_field (ia=0xbfbdba08, row=<value optimized out>, column=5, outputp=0x0, tooltipp=0xbfbdc528)
at src/ui/gui/text-data-import-dialog.c:1690
1690 field = ia->separators.columns[column].contents[row];
(gdb) bt
#0 0x0808c3d7 in parse_field (ia=0xbfbdba08, row=<value optimized out>, column=5, outputp=0x0,
tooltipp=0xbfbdc528) at src/ui/gui/text-data-import-dialog.c:1690
#1 0x0808c8e6 in on_query_output_tooltip (widget=0x8445db0, wx=428, wy=57, keyboard_mode=0, tooltip=0x8429d48,
ia=0xbfbdba08) at src/ui/gui/text-data-import-dialog.c:1782
#2 0xb7d88106 in _gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECT (closure=0x85c2b18, return_value=0xbfbdc6c0,
n_param_values=5, param_values=0xbfbdc7ac, invocation_hint=0xbfbdc6ac, marshal_data=0x808c8a0)
at gtkmarshalers.c:835
#3 0xb79a2e5c in IA__g_closure_invoke (closure=0x85c2b18, return_value=0xbfbdc6c0, n_param_values=5,
param_values=0xbfbdc7ac, invocation_hint=0xbfbdc6ac) at gclosure.c:490
#4 0xb79b37fa in signal_emit_unlocked_R (node=0x81be3c8, detail=0, instance=0x8445db0,
emission_return=0xbfbdc96c, instance_and_params=0xbfbdc7ac) at gsignal.c:2440
#5 0xb79b4ac2 in IA__g_signal_emit_valist (instance=0x8445db0, signal_id=69, detail=0,
var_args=0xbfbdca08 "4
patch=1, self=0x81c81a8)
at gmain.c:2694
#13 0xb7907918 in IA__g_main_loop_run (loop=0x840b708) at gmain.c:2898
#14 0xb7d83ba9 in IA__gtk_main () at gtkmain.c:1163
#15 0x08076584 in run_inner_loop (data=0x81c1848) at src/ui/gui/main.c:82
#16 0xb7d83d0a in IA__gtk_main () at gtkmain.c:2233
#17 0x08076523 in main (argc=136012152, argv=0x1) at src/ui/gui/main.c:131
Further information from Ben Paff:
John Darrington <john@cellform.com.au> writes:
> My guess is that on_query_output_tooltip is getting called after its
> data (the struct import_assistant) has been destroyed. So if I'm
> right, then we either need to set ia to NULL and test for this in the
> callback, or disconnect the callback before the data is destroyed.
This was my own tentative diagnosis, too, months ago when I
encountered it. I was never able to reproduce it under valgrind,
though, so I concluded that it was somehow timing sensitive.
|