2011/7/1 Christian Apeltauer <c.apelta...@gmx.de>

> Dear developers,
>  since some weeks now I have trouble running elsa: The X server starts,
> but elsa_client never comes up. I was able to hunt down the
> error. Currently I am using rev 60908.
>  In elsa/src/daemin/elsa_server.c lines 135-142:
>
>   dirs = efreet_data_dirs_get();
>   EINA_LIST_FREE(dirs, path)
>     {
>        snprintf(buf, sizeof(buf), "%s/xsessions", path);
>        _elsa_server_scan_desktops(buf);
>        eina_stringshare_del(path);
>     }
>   efreet_shutdown();
>
> The data structure dirs points to is freed, but the static variable
> xdg_data_dirs (defined in efreet/src/lib/efreet_base.c:48) still points
> to it. efreet_shutdown() leads to efreet/src/lib/efreet_base.c:87
>
>    IF_FREE_LIST(xdg_data_dirs,eina_stringshare_del);
>
> The macro IF_FREE_LIST checks whether xdg_data_dirs is a NULL pointer
> (which it is not) but not whether the Eina_List pointed to is already
> freed and tries to free it again leading to a hang up of elsa. So I
> suggest the following patch:
>
> diff -Naur elsa/src/daemon/elsa_server.c
> elsa.neu//src/daemon/elsa_server.c ---
> elsa/src/daemon/elsa_server.c   2011-07-01 09:29:03.000000000
> +0200 +++ elsa.neu//src/daemon/elsa_server.c    2011-06-26
> 12:35:35.000000000 +0200 @@ -122,7 +122,7 @@
> _elsa_server_init_desktops() {
>    char buf[PATH_MAX];
> -   Eina_List *dirs;
> +   Eina_List *dirs, *l;
>    const char *path;
>
>    efreet_init();
> @@ -133,11 +133,12 @@
>    snprintf(buf, sizeof(buf), "%s/xsessions", efreet_data_home_get());
>    _elsa_server_scan_desktops(buf);
>    dirs = efreet_data_dirs_get();
> -   EINA_LIST_FREE(dirs, path)
> +   //EINA_LIST_FREE(dirs, path)
> +   EINA_LIST_FOREACH(dirs, l, path)
>      {
>         snprintf(buf, sizeof(buf), "%s/xsessions", path);
>         _elsa_server_scan_desktops(buf);
> -        eina_stringshare_del(path);
> +        //eina_stringshare_del(path);
>      }
>    efreet_shutdown();
>  }
>
> Another correction should be done to elsa/src/daemon/elsa.c:
> diff -Naur elsa/src/daemon/elsa.c elsa.neu//src/daemon/elsa.c
> --- elsa/src/daemon/elsa.c      2011-06-26 12:25:38.000000000 +0200
> +++ elsa.neu//src/daemon/elsa.c 2011-06-26 13:21:18.000000000
> +0200 @@ -290,6 +290,7 @@
>    elsa_pam_shutdown();
>    ecore_shutdown();
>    elsa_close_log();
> +   _remove_lock(); //_remove_lock() still uses elsa_config
>    elsa_config_shutdown();
>    if (elsa_session_logged_get())
>      {
> @@ -299,7 +300,7 @@
>         putenv(buf);
>         _elsa_wait();
>      }
> -   _remove_lock();
> +   //_remove_lock(); // elsa_config is already freed here
>    return 0;
>  }
>
>  Best regards
>   Christian
>
>
> ------------------------------------------------------------------------------
> All of the data generated in your IT infrastructure is seriously valuable.
> Why? It contains a definitive record of application performance, security
> threats, fraudulent activity, and more. Splunk takes this data and makes
> sense of it. IT sense. And common sense.
> http://p.sf.net/sfu/splunk-d2d-c2
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>

Oh this is very bad! Thanks for report, now fixed.

-- 
Michaƫl Bouchaud
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security 
threats, fraudulent activity, and more. Splunk takes this data and makes 
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to