On Sat, 9 Jan 2010 07:16:00 +0800 Tom Haste <[email protected]> said:
> I noticed this too. I spent a little time investigating it, but > obviously not enough. It did get me thinking about module names and > where these lists are generated. Would it not be better to have 1 > single place where the module is named? eg. the name can be different > from 'Available Gadgets' and 'Loaded Modules'. I assume this is for > modules that provide multiple gadgets? well no - the issue was that the connman module is based on mixer code - and one symbol happened to be the same - not renamed AND public - so if u loaded both modulws - the 1 symbol could have pointer randomly to either bit of data - so the string in this case would have show up in the list under the entry for the other (the item that should have been "connection manager" was "mixer"). gustavo is pointing out there could be other potential issues yet undiscovered and we should namespace public symbols or make them non-public (static) to avoid bizarre issues. > 2010/1/9 Gustavo Sverzut Barbieri <[email protected]>: > > On Fri, Jan 8, 2010 at 8:12 PM, Iván Briano (Sachiel) > > <[email protected]> wrote: > >> On Fri, Jan 8, 2010 at 7:03 PM, Gustavo Sverzut Barbieri > >> <[email protected]> wrote: > >>> Hi all, > >>> > >>> Today I used enlightenment without -fvisibility=hidden and noticed a > >>> complain of mixer/connman users: they clash. Investigating the cause, > >>> I found that _Name were not defined static in both, so they clashed. I > >>> fixed my modules, but then I ran a quick script over modules and got > >>> the following list (please investigate further). I'm about to travel > >>> so I can't fix them now, please help: > >>> > >>> note: I hand edited and cut some obvious cases, but the command was: > >>> > >>> for m in *; do echo "$m:"; readelf -s > >>> /usr/lib/enlightenment/modules/$m/linux-gnu-i686-ver-pre-svn-05/module.so > >>> | grep 'GLOBAL DEFAULT' | grep -v 'UND ' | grep -v > >>> "\(_fini\|_init\|__bss_start\|_end\|_edata\|e_modapi\|evry\|e_kbd_\|il_\| > >>> e_int_\|e_fwin\|_\?e_$m\|_\?$m\)" > >>> | sed "s/.* \([a-zA-Z0-9_]\+\)/ \1/g"; done > >>> > >>> conf_colors: > >>> _wid_hash > >>> _wm_hash > >>> color_classes > >>> _mod_hash > >>> conf_exebuf: > >>> scroll_list > >>> conf_fonts: > >>> text_class_predefined_nam > >>> conf_intl: > >>> charset_predefined_pairs > >>> language_predefined_pairs > >>> basic_language_predefined > >>> region_predefined_pairs > >>> conf_mime: > >>> types > >>> conf_profiles > >>> _dia_new_profile > >>> conf_window_display > >>> shading_list > >>> conf_window_manipulation > >>> autoraise_list > >>> resistance_list > >>> conf_winlist > >>> scroll_animation_list > >>> iconified_list > >>> everything > >>> selectors > >>> action_selector > >>> fileman > >>> _e_mod_menu_generate > >>> gadman > >>> current > >>> Man > >>> ibox > >>> show_label_list > >>> illume > >>> slipshelf > >>> gadits > >>> delay_label > >>> _e_mod_gad_gsm_shutdown > >>> delay_slider > >>> local_slipshelf > >>> external_keyboard > >>> illume2 > >>> policy_name > >>> o_top > >>> _sw_change_timer > >>> _ps_change_timer > >>> stype > >>> _windows_change_timer > >>> o_left > >>> _anim_change_timer > >>> _policy_change_timer > >>> illume-home > >>> delay_slider > >>> delay_label > >>> illume-keyboard > >>> external > >>> illume-softkey > >>> e_mod_sk_win_shutdown > >>> e_mod_sk_win_new > >>> msgbus_lang > >>> cb_langs > >>> notification > >>> _gc_orient > >>> uuid > >>> _gc_class > >>> pager > >>> popup_list > >>> > >>> Lots of them were introduced with last illume modules (/me look at > >>> devilhorns ;-)) > >>> > >>> How to solve? Simple, go to that module and PREFIX the variable with > >>> _e_${MODNAME}_ or _${MODNAME}_ to make clear they will not clash with > >>> another module. > >>> > >> > >> And/or 'static' where appropriate, may be less work in some cases. > > > > Sure, I forgot to say that, but if the symbol is not used in other > > files, then just add the "static" keyword before the symbol > > definition. > > > > If people can help with such QA, then also check all EAPI inside > > modules. By default, modules should export only: e_modapi* (struct and > > 2-3 functions) as requested by E17. Everything else should be private > > to the module (either static or no-EAPI!). Of course there are > > exceptions, for example modules that have dynamic modules themselves > > (illume, everything) > > > > BR, > > > > -- > > Gustavo Sverzut Barbieri > > http://profusion.mobi embedded systems > > -------------------------------------- > > MSN: [email protected] > > Skype: gsbarbieri > > Mobile: +55 (19) 9225-2202 > > > > ------------------------------------------------------------------------------ > > This SF.Net email is sponsored by the Verizon Developer Community > > Take advantage of Verizon's best-in-class app development support > > A streamlined, 14 day to market process makes app distribution fast and easy > > Join now and get one step closer to millions of Verizon customers > > http://p.sf.net/sfu/verizon-dev2dev > > _______________________________________________ > > enlightenment-devel mailing list > > [email protected] > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > ------------------------------------------------------------------------------ > This SF.Net email is sponsored by the Verizon Developer Community > Take advantage of Verizon's best-in-class app development support > A streamlined, 14 day to market process makes app distribution fast and easy > Join now and get one step closer to millions of Verizon customers > http://p.sf.net/sfu/verizon-dev2dev > _______________________________________________ > enlightenment-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > -- ------------- Codito, ergo sum - "I code, therefore I am" -------------- The Rasterman (Carsten Haitzler) [email protected] ------------------------------------------------------------------------------ This SF.Net email is sponsored by the Verizon Developer Community Take advantage of Verizon's best-in-class app development support A streamlined, 14 day to market process makes app distribution fast and easy Join now and get one step closer to millions of Verizon customers http://p.sf.net/sfu/verizon-dev2dev _______________________________________________ enlightenment-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
