On Wed, 26 Oct 2011 00:27:59 +0200 Martin Jansa <martin.ja...@gmail.com> said:

> On Tue, Oct 25, 2011 at 07:40:11PM +0200, Klaus 'mrmoku' Kurzmann wrote:
> > Hi all,
> > 
> > starting with r64102 enlightenment started to segfault on startup with
> > the following backtrace:
> > 
> > (gdb) bt
> > #0  0x4030a890 in __libc_waitpid (pid=4140, stat_loc=0xbeb463c4, options=0)
> > #at ../sysdeps/unix/sysv/linux/waitpid.c:32 1  0x000314b4 in e_alert_show
> > #(sig=<optimized out>) at e_alert.c:57 2  <signal handler called>
> > #3  0x0005a190 in e_desk_show (desk=0x15a768) at e_desk.c:265
> > #4  0x000d2214 in e_zone_desk_count_set (zone=0x2116c8, x_count=<optimized
> > #out>, y_count=<optimized out>) at e_zone.c:674 5  0x000d2e34 in e_zone_new
> > #out>(con=<optimized out>, num=<optimized out>, id=<optimized out>, x=0,
> > #out>y=0, w=480, h=640) at e_zone.c:244
> > #6  0x0005776c in e_container_new (man=0x174830) at e_container.c:183
> > #7  0x0002fee0 in _e_main_screens_init () at e_main.c:1543
> > #8  main (argc=<optimized out>, argv=<optimized out>) at e_main.c:577
> > 
> > Disabling the edje message added by r64102 like with the following patch
> > makes the segfault go away.
> > 
> > 
> > diff --git a/e/src/bin/e_desk.c b/e/src/bin/e_desk.c
> > index b140187..9ba8608 100644
> > --- a/e/src/bin/e_desk.c
> > +++ b/e/src/bin/e_desk.c
> > @@ -237,14 +237,14 @@ e_desk_show(E_Desk *desk)
> >     desk->zone->desk_y_current = desk->y;
> >     desk->visible = 1;
> >  
> > -   msg = alloca(sizeof(Edje_Message_Float_Set) + sizeof(double));
> > -   msg->count = 1;
> 
> the count was later fixed to 5 in r64156, but we still had allocated
> space only for one double in Edje_Message_Float_Set + one extra, while
> using 4 extra double params (Thanks to nschle85 for noticing it)
> 
> diff --git a/src/bin/e_desk.c b/src/bin/e_desk.c
> index b140187..9ba8608 100644
> --- a/src/bin/e_desk.c
> +++ b/src/bin/e_desk.c
> @@ -237,7 +237,7 @@ e_desk_show(E_Desk *desk)
>     desk->zone->desk_y_current = desk->y;
>     desk->visible = 1;
> 
> -   msg = alloca(sizeof(Edje_Message_Float_Set) + sizeof(double));
> +   msg = alloca(sizeof(Edje_Message_Float_Set) + 4 * sizeof(double));
>     msg->count = 5;
>     msg->val[0] = e_config->desk_flip_animate_time;
>     msg->val[1] = (double) desk->x;
> 
> -- 
> Martin 'JaMa' Jansa     jabber: martin.ja...@gmail.com

yeah - that code there was wrong. it didn't allocate anywhere near enough space
for the message.

-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn 
about Cisco certifications, training, and career opportunities. 
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to