On Fri, 2008-02-15 at 02:25 +0000, Peter Clifton wrote: > This one has a slightly odd route to reproduce: > > 1. Load gschem (getting a blank schematic). > 2. Dirty it (say draw a net somewhere). > 3. Create a new page. > 4. Dirty that (say draw a net somewhere). > 5. Close the current page (don't bother to save). > 6. lose the gschem window (without saving). > 7. Cancel out of the save confirmation dialog. > > CRASH. > > Program received signal SIGSEGV, Segmentation fault. > [Switching to Thread -1222043984 (LWP 16868)] > 0xb74b2942 in strrchr () from /lib/tls/i686/cmov/libc.so.6 > (gdb) bt > #0 0xb74b2942 in strrchr () from /lib/tls/i686/cmov/libc.so.6 > #1 0xb7ad488b in g_path_get_dirname () from /usr/lib/libglib-2.0.so.0 > #2 0xb7eab04b in s_page_goto (toplevel=0x80d74c0, p_new=0x8663588) > at s_page.c:274 > #3 0x0807b422 in x_dialog_close_window (w_current=0x80cfa78) > at x_dialog.c:4065 > #4 0x0808cf36 in x_window_close (w_current=0x80cfa78) at x_window.c:627 > #5 0x0805ed7a in i_callback_close_wm (widget=0x8144828, > event=0x82d1b80, > data=0x80cfa78) at i_callbacks.c:3557 > #6 0xb77481de in _gtk_marshal_BOOLEAN__BOXED (closure=0x81445d8, > return_value=0xbf9df760, n_param_values=2, param_values=0xbf9df86c, > invocation_hint=0xbf9df74c, marshal_data=0x805ed60) > at /build/buildd/gtk+2.0-2.12.0/gtk/gtkmarshalers.c:84
Valgrind seems to indicate that the badness in fact starts when the second page dirty is closed without saving: ==16921== Invalid read of size 4 ==16921== at 0x407D040: s_page_goto (s_page.c:274) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== by 0x4136560: scm_eval_string_in_module (strports.c:527) ==16921== by 0x4136594: scm_eval_string (strports.c:535) ==16921== by 0x41365C4: scm_c_eval_string (strports.c:481) ==16921== by 0x805CBDD: g_keys_execute (g_keys.c:111) ==16921== Address 0x7F5F0C8 is 40 bytes inside a block of size 2,132 free'd ==16921== at 0x402237F: free (vg_replace_malloc.c:233) ==16921== by 0x44389C0: g_free (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D2D5: s_page_delete (s_page.c:217) ==16921== by 0x808CA63: x_window_close_page (x_window.c:1019) ==16921== by 0x807B5C2: x_dialog_close_changed_page (x_dialog.c:3943) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== ==16921== Invalid read of size 1 ==16921== at 0x4023367: rindex (mc_replace_strmem.c:143) ==16921== by 0x446388A: g_path_get_dirname (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D04A: s_page_goto (s_page.c:274) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== by 0x4136560: scm_eval_string_in_module (strports.c:527) ==16921== by 0x4136594: scm_eval_string (strports.c:535) ==16921== Address 0x7E2D600 is 0 bytes inside a block of size 27 free'd ==16921== at 0x402237F: free (vg_replace_malloc.c:233) ==16921== by 0x44389C0: g_free (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D2BB: s_page_delete (s_page.c:209) ==16921== by 0x808CA63: x_window_close_page (x_window.c:1019) ==16921== by 0x807B5C2: x_dialog_close_changed_page (x_dialog.c:3943) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== ==16921== Invalid read of size 1 ==16921== at 0x4463891: g_path_get_dirname (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D04A: s_page_goto (s_page.c:274) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== by 0x4136560: scm_eval_string_in_module (strports.c:527) ==16921== by 0x4136594: scm_eval_string (strports.c:535) ==16921== by 0x41365C4: scm_c_eval_string (strports.c:481) ==16921== Address 0x7E2D60B is 11 bytes inside a block of size 27 free'd ==16921== at 0x402237F: free (vg_replace_malloc.c:233) ==16921== by 0x44389C0: g_free (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D2BB: s_page_delete (s_page.c:209) ==16921== by 0x808CA63: x_window_close_page (x_window.c:1019) ==16921== by 0x807B5C2: x_dialog_close_changed_page (x_dialog.c:3943) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== ==16921== Invalid read of size 1 ==16921== at 0x40238D0: memmove (mc_replace_strmem.c:514) ==16921== by 0x44638C4: g_path_get_dirname (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D04A: s_page_goto (s_page.c:274) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== by 0x4136560: scm_eval_string_in_module (strports.c:527) ==16921== by 0x4136594: scm_eval_string (strports.c:535) ==16921== Address 0x7E2D600 is 0 bytes inside a block of size 27 free'd ==16921== at 0x402237F: free (vg_replace_malloc.c:233) ==16921== by 0x44389C0: g_free (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D2BB: s_page_delete (s_page.c:209) ==16921== by 0x808CA63: x_window_close_page (x_window.c:1019) ==16921== by 0x807B5C2: x_dialog_close_changed_page (x_dialog.c:3943) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== ==16921== Invalid read of size 1 ==16921== at 0x40238DF: memmove (mc_replace_strmem.c:514) ==16921== by 0x44638C4: g_path_get_dirname (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D04A: s_page_goto (s_page.c:274) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) ==16921== by 0x4136560: scm_eval_string_in_module (strports.c:527) ==16921== by 0x4136594: scm_eval_string (strports.c:535) ==16921== Address 0x7E2D602 is 2 bytes inside a block of size 27 free'd ==16921== at 0x402237F: free (vg_replace_malloc.c:233) ==16921== by 0x44389C0: g_free (in /usr/lib/libglib-2.0.so.0.1505.0) ==16921== by 0x407D2BB: s_page_delete (s_page.c:209) ==16921== by 0x808CA63: x_window_close_page (x_window.c:1019) ==16921== by 0x807B5C2: x_dialog_close_changed_page (x_dialog.c:3943) ==16921== by 0x805B08F: g_keys_page_close (g_keys.c:307) ==16921== by 0x40DC1B8: deval (eval.c:4122) ==16921== by 0x40DD270: deval (eval.c:3384) ==16921== by 0x40E1C79: scm_primitive_eval_x (eval.c:5906) ==16921== by 0x4136307: inner_eval_string (strports.c:500) ==16921== by 0x40E3A9D: scm_c_with_fluid (fluids.c:453) ==16921== by 0x40FBFB4: scm_c_call_with_current_module (modules.c:91) -- Peter Clifton Electrical Engineering Division, Engineering Department, University of Cambridge, 9, JJ Thomson Avenue, Cambridge CB3 0FA Tel: +44 (0)7729 980173 - (No signal in the lab!) _______________________________________________ geda-dev mailing list [email protected] http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev
