I fixed it in ecore_x_icccm.c Sebastian
[EMAIL PROTECTED] wrote: > Hi Mathieu, > > I've noticed the bug (e can crash if you close a window for an app that > was started with cmd line params from exe-buf or an eap), and had > narrowed it down (looking at the recent changelogs) to that section. > Haven't had any time to follow through thouh.. I'll try to > find time tonight or tomorrow (unless someone beats me to it). > > Thanks for the debugging info :) > -- > rephorm > > On Fri, Jun 09, 2006 at 03:17:33PM +0200, Mathieu Taillefumier wrote: >> 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 > > > > _______________________________________________ > enlightenment-devel mailing list > enlightenment-devel@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel