Hello, I found a reproductible bug on the enlightenment code. I am using the last cvs version of e17 and compiled it with gcc-4.1.1 and glibc 2.4 for informations. The bug occurs when I want to quit enlightenment or when I quit the configuration menu. After making a debugging session, I found that e17 frees some pointers named bd->client.icccm.command.argv[i]. this line can be found at e_border.c:2937. I was trying to search a line where this variable is allocated but I found nothing interesting. You will find some debugging informations in the following.
command line /usr/local/bin/enlightenment -evil Reproduction : 100 % Way to reproduce it : just quit e17 backtrace with gdb (gdb) bt #0 0xffffe410 in __kernel_vsyscall () #1 0xb798a36d in ___newselect_nocancel () from /lib/libc.so.6 #2 0xb7a46154 in _XWaitForReadable () from /usr/X11R6/lib/libX11.so.6 #3 0xb7a46511 in _XRead () from /usr/X11R6/lib/libX11.so.6 #4 0xb7a47969 in _XReadEvents () from /usr/X11R6/lib/libX11.so.6 #5 0xb7a3663a in XNextEvent () from /usr/X11R6/lib/libX11.so.6 #6 0x080d181f in e_alert_show ( text=0x812efa4 "This is very bad. Enlightenment has segfaulted.\nThis is not meant to happen and is likely a sign of a\nbug in Enlightenment or the libraries it relies on.\n\nYou can gdb attach to this process now to try"...) at e_alert.c:137 #7 0x080b9fb2 in e_sigseg_act (x=11, info=0xbfd0b52c, data=0xbfd0b5ac) at e_signals.c:53 #8 <signal handler called> #9 0xb793878f in free () from /lib/libc.so.6 #10 0x08082e38 in _e_border_free (bd=0x8474658) at e_border.c:2937 #11 0x080a1ddd in e_object_free (obj=0x8474658) at e_object.c:77 #12 0x080a1e2c in e_object_unref (obj=0x8474658) at e_object.c:96 #13 0x0808c561 in _e_border_event_border_remove_free (data=0x0, ev=0x845c028) at e_border.c:6236 #14 0xb7ca1658 in _ecore_event_del (event=0x8409c98) at ecore_events.c:357 #15 0xb7ca1910 in _ecore_event_call () at ecore_events.c:445 #16 0xb7ca8a36 in _ecore_main_loop_iterate_internal (once_only=0) at ecore_main.c:639 #17 0xb7ca7c25 in ecore_main_loop_begin () at ecore_main.c:79 #18 0x080638a9 in main (argc=2, argv=0xbfd0ec34) at e_main.c:689 (gdb) fr 10 #10 0x08082e38 in _e_border_free (bd=0x8474658) at e_border.c:2937 2937 free(bd->client.icccm.command.argv[i]); (gdb) l 2932 if ((bd->client.icccm.command.argc > 0) && (bd->client.icccm.command.argv)) 2933 { 2934 int i; 2935 2936 for (i = 0; i < bd->client.icccm.command.argc; i++) 2937 free(bd->client.icccm.command.argv[i]); 2938 free(bd->client.icccm.command.argv); 2939 } 2940 if (bd->client.netwm.name) free(bd->client.netwm.name); 2941 if (bd->client.netwm.icon_name) free(bd->client.netwm.icon_name); (gdb) p bd $11 = (E_Border *) 0x8474658 (gdb) p bd->client.icccm.command.argv[i] $10 = 0x836cd65 "-evil" (gdb) p bd->client.icccm.command.argv $12 = (char **) 0x8471288 (gdb) p bd->client.icccm.command $13 = {argc = 2, argv = 0x8471288} (gdb) p bd->client.icccm $14 = {title = 0x0, name = 0x8388ad0 "[EMAIL PROTECTED]", class = 0x8388468 "È\2128\bfigure", icon_name = 0x0, machine = 0x83c90c8 "`\2048\bite", min_w = 352, min_h = 310, max_w = 9999, max_h = 9999, base_w = -1, base_h = -1, step_w = -1, step_h = -1, start_x = 0, start_y = 0, min_aspect = 0, max_aspect = 0, initial_state = ECORE_X_WINDOW_STATE_HINT_WITHDRAWN, state = ECORE_X_WINDOW_STATE_HINT_ICONIC, icon_pixmap = 0, icon_mask = 0, icon_window = 0, window_group = 0, transient_for = 163, client_leader = 0, gravity = ECORE_X_GRAVITY_NW, window_role = 0x0, take_focus = 0 '\0', accepts_focus = 1 '\001', urgent = 0 '\0', delete_request = 1 '\001', request_pos = 0 '\0', command = {argc = 2, argv = 0x8471288}, fetch = {title = 0 '\0', name_class = 0 '\0', icon_name = 0 '\0', machine = 0 '\0', hints = 0 '\0', size_pos_hints = 0 '\0', protocol = 0 '\0', transient_for = 0 '\0', client_leader = 0 '\0', window_role = 0 '\0', state = 0 '\0', command = 0 '\0'}} (gdb) p bd $15 = (E_Border *) 0x8474658 (gdb) fr 11 #11 0x080a1ddd in e_object_free (obj=0x8474658) at e_object.c:77 77 obj->cleanup_func(obj); (gdb) l 72 e_object_breadcrumb_debug(obj); 73 } 74 */ 75 if (obj->free_att_func) obj->free_att_func(obj); 76 obj->magic = E_OBJECT_MAGIC_FREED; 77 obj->cleanup_func(obj); 78 } 79 80 EAPI int 81 e_object_ref(E_Object *obj) (gdb) p obj $16 = (E_Object *) 0x8474658 (gdb) p obj->magic $17 = -524325139 If you need more informations about it feel free to contact me regards Mathieu _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel