Bug 502546 - Evolution crashes when preferences are opened with enchant-voikko installed
Evolution crashes when preferences are opened with enchant-voikko installed
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: malaga (Show other bugs)
11
All Linux
low Severity medium
: ---
: ---
Assigned To: Ville-Pekka Vainio
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2009-05-26 00:09 EDT by Bojan Smojver
Modified: 2009-06-26 23:02 EDT (History)
3 users (show)

See Also:
Fixed In Version: 7.12-4.fc11
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2009-06-26 23:02:07 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
test.c (785 bytes, text/plain)
2009-05-27 06:27 EDT, Milan Crha
no flags Details

  None (edit)
Description Bojan Smojver 2009-05-26 00:09:00 EDT
Description of problem:
If evolution-mapi RPM is installed, Evolution crashes if one attempts to open preferences.

Version-Release number of selected component (if applicable):
evolution-2.26.1-2.fc11.i586

How reproducible:
Always.

Steps to Reproduce:
1. Install evolution-mapi.
2. Click on Edit, Preferences.
  
Actual results:
Crash.

Expected results:
Should work.


Additional info:
Program received signal SIGSEGV, Segmentation fault.
0x01f8a49a in check_header (header=0x0, 
    file_name=0x96164d0 "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.lex_l", 
    file_type=2, min_code_version=14, max_code_version=14)
    at ./malaga_files.c:37
37	  if (memcmp( header->malaga, malaga, sizeof( char_t ) * MALAGA_LEN ) != NULL) 
(gdb) bt
#0  0x01f8a49a in check_header (header=0x0, 
    file_name=0x96164d0 "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.lex_l", 
    file_type=2, min_code_version=14, max_code_version=14)
    at ./malaga_files.c:37
#1  0x01f8a2c3 in init_lexicon (
    file_name=0x96164d0 "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.lex_l")
    at ./lexicon.c:97
#2  0x01f8b494 in init_malaga (
    project_file=0x96133f8 "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.pro")
    at ./malaga_lib.c:608
#3  0x01f9606b in init_libmalaga (
    project_file=0x961dedc "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.pro")
    at ./libmalaga.c:50
#4  0x01ef577e in libvoikko::setup::DictionaryLoader::loadDictionary (
    dictionary=@0x961e018) at setup/DictionaryLoader.cpp:275
#5  0x01ef6ec4 in libvoikko::setup::DictionaryLoader::load (variant="fi_FI", 
    path="") at setup/DictionaryLoader.cpp:97
#6  0x01ef714f in libvoikko::setup::DictionaryLoader::load (variant="fi_FI")
    at setup/DictionaryLoader.cpp:77
#7  0x01ef46db in libvoikko::voikko_init_with_path (handle=0xbfffd52c, 
    langcode=0x396a9e "fi_FI", cache_size=0, path=0x0) at setup/setup.cpp:203
#8  0x01ef43e3 in libvoikko::voikko_init (handle=0xbfffd52c, 
    langcode=0x396a9e "fi_FI", cache_size=0) at setup/setup.cpp:146
---Type <return> to continue, or q <return> to quit---
#9  0x003967f2 in voikko_provider_list_dicts (me=0x9613238, 
    out_n_dicts=0xbfffd5ac) at voikko_provider.c:140
#10 0x0015a4dd in enchant_broker_list_dicts (broker=0x960eef0, fn=0x5e4e270, 
    user_data=0x96091f8) at enchant.c:1857
#11 0x05e4e05d in gtkhtml_spell_language_get_available ()
   from /usr/lib/libgtkhtml-editor.so.0
#12 0x02bb6625 in spell_setup (prefs=<value optimized out>)
    at em-composer-prefs.c:630
#13 em_composer_prefs_construct (prefs=<value optimized out>)
    at em-composer-prefs.c:979
#14 em_composer_prefs_new (prefs=<value optimized out>)
    at em-composer-prefs.c:1102
#15 0x02c0599d in mail_config_control_factory_cb (factory=0x952fe90, 
    component_id=<value optimized out>, user_data=0x0)
    at mail-config-factory.c:51
#16 0x02c0237d in factory (factory=0x952fe90, 
    component_id=0x16aaf18 "\344\370H", closure=0x0)
    at mail-component-factory.c:73
#17 0x0713e264 in bonobo_marshal_OBJECT__STRING ()
   from /usr/lib/libbonobo-2.so.0
#18 0x00ba6352 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#19 0x0713e5a4 in bonobo_closure_invoke_va_list ()
   from /usr/lib/libbonobo-2.so.0
---Type <return> to continue, or q <return> to quit---
#20 0x0713e829 in bonobo_closure_invoke () from /usr/lib/libbonobo-2.so.0
#21 0x071283eb in ?? () from /usr/lib/libbonobo-2.so.0
#22 0x07136ae4 in ?? () from /usr/lib/libbonobo-2.so.0
#23 0x07128687 in ?? () from /usr/lib/libbonobo-2.so.0
#24 0x06f9d1a1 in _ORBIT_skel_small_Bonobo_GenericFactory_createObject ()
   from /usr/lib/libbonobo-activation.so.4
#25 0x00cb396e in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
#26 0x06f9eec3 in Bonobo_GenericFactory_createObject ()
   from /usr/lib/libbonobo-activation.so.4
#27 0x06fa0f37 in bonobo_activation_activate_shlib_server ()
   from /usr/lib/libbonobo-activation.so.4
#28 0x06fa1950 in ?? () from /usr/lib/libbonobo-activation.so.4
#29 0x06fa206e in bonobo_activation_activate ()
   from /usr/lib/libbonobo-activation.so.4
#30 0x06fa2308 in bonobo_activation_activate_from_id ()
   from /usr/lib/libbonobo-activation.so.4
#31 0x08057180 in load_pages (dialog=<value optimized out>)
    at e-shell-settings-dialog.c:216
#32 e_shell_settings_dialog_init (dialog=<value optimized out>)
    at e-shell-settings-dialog.c:310
#33 0x00bc6fdf in g_type_create_instance () from /lib/libgobject-2.0.so.0
#34 0x00baba58 in ?? () from /lib/libgobject-2.0.so.0
#35 0x00bacc4c in g_object_newv () from /lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#36 0x00bad84a in g_object_new_valist () from /lib/libgobject-2.0.so.0
#37 0x00bad9ce in g_object_new () from /lib/libgobject-2.0.so.0
#38 0x08056d0c in e_shell_settings_dialog_new ()
    at e-shell-settings-dialog.c:323
#39 0x0805317d in e_shell_show_settings (shell=0x80b0cf0, 
    type=0x8287ce8 "mail", shell_window=0x80e32e0) at e-shell.c:1244
#40 0x0805936c in e_shell_window_show_settings (window=0x80e32e0)
    at e-shell-window.c:1210
#41 0x080578cd in command_settings (uih=0x823a890, window=0x80e32e0, 
    path=0x9461718 "Settings") at e-shell-window-commands.c:1077
#42 0x05beccac in marshal_VOID__USER_DATA_STRING (closure=0x823f2c8, 
    return_value=0xbfffe4ac, n_param_values=2, param_values=0x9461798, 
    invocation_hint=0x0, marshal_data=0x80578b0) at bonobo-ui-component.c:221
#43 0x00ba6352 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#44 0x0713e5a4 in bonobo_closure_invoke_va_list ()
   from /usr/lib/libbonobo-2.so.0
#45 0x0713e804 in bonobo_closure_invoke () from /usr/lib/libbonobo-2.so.0
#46 0x05becfdc in impl_Bonobo_UIComponent_execVerb (servant=0x823a8a4, 
    cname=0x9461750 "Settings", ev=0xbfffe64c) at bonobo-ui-component.c:158
#47 0x0713f861 in _ORBIT_skel_small_Bonobo_UIComponent_execVerb ()
   from /usr/lib/libbonobo-2.so.0
#48 0x00cb396e in ORBit_c_stub_invoke () from /usr/lib/libORBit-2.so.0
#49 0x07147144 in Bonobo_UIComponent_execVerb () from /usr/lib/libbonobo-2.so.0
---Type <return> to continue, or q <return> to quit---
#50 0x05bf1e55 in real_exec_verb (verb=<value optimized out>, 
    component_name=<value optimized out>, engine=<value optimized out>)
    at bonobo-ui-engine.c:1535
#51 impl_emit_verb_on (verb=<value optimized out>, 
    component_name=<value optimized out>, engine=<value optimized out>)
    at bonobo-ui-engine.c:1593
#52 0x00bb3308 in g_cclosure_marshal_VOID__POINTER ()
   from /lib/libgobject-2.0.so.0
#53 0x00ba49c9 in ?? () from /lib/libgobject-2.0.so.0
#54 0x00ba6352 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#55 0x00bbb8bb in ?? () from /lib/libgobject-2.0.so.0
#56 0x00bbcf7d in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
#57 0x00bbd406 in g_signal_emit () from /lib/libgobject-2.0.so.0
#58 0x05bef5e8 in bonobo_ui_engine_emit_verb_on_w (engine=0x80e8a30, 
    widget=0x824eae0) at bonobo-ui-engine.c:3042
#59 0x05bf8ff5 in exec_verb_cb (item=0x824eae0, engine=0x80e8a30)
    at bonobo-ui-sync-menu.c:475
#60 0x00bb3d4c in g_cclosure_marshal_VOID__VOID ()
   from /lib/libgobject-2.0.so.0
#61 0x00ba6352 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#62 0x00bbbbc8 in ?? () from /lib/libgobject-2.0.so.0
#63 0x00bbcf7d in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
#64 0x00bbd406 in g_signal_emit () from /lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#65 0x069d8df7 in gtk_widget_activate () from /usr/lib/libgtk-x11-2.0.so.0
#66 0x068c67f0 in gtk_menu_shell_activate_item ()
   from /usr/lib/libgtk-x11-2.0.so.0
#67 0x068c824d in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#68 0x068bded9 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#69 0x068b76e4 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#70 0x00ba49c9 in ?? () from /lib/libgobject-2.0.so.0
#71 0x00ba6352 in g_closure_invoke () from /lib/libgobject-2.0.so.0
#72 0x00bbb8bb in ?? () from /lib/libgobject-2.0.so.0
#73 0x00bbce08 in g_signal_emit_valist () from /lib/libgobject-2.0.so.0
#74 0x00bbd406 in g_signal_emit () from /lib/libgobject-2.0.so.0
#75 0x069d2c9e in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#76 0x068b00a8 in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#77 0x068b1369 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#78 0x0057258a in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#79 0x00e2b1e8 in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#80 0x00e2e7f8 in ?? () from /lib/libglib-2.0.so.0
#81 0x00e2ecaf in g_main_loop_run () from /lib/libglib-2.0.so.0
#82 0x0712a913 in bonobo_main () from /usr/lib/libbonobo-2.so.0
#83 0x0805d778 in main (argc=1, argv=0xbffff504) at main.c:704
Comment 1 Milan Crha 2009-05-26 04:29:15 EDT
Thanks for the bug report. Based on the back trace the crash comes from libvoikko
0x01f8a49a in check_header (header=0x0, 
    file_name=0x96164d0 "/usr/lib/voikko/1/mor-standard/voikko-fi_FI.lex_l", 
    file_type=2, min_code_version=14, max_code_version=14)
    at ./malaga_files.c:37

when evolution asks for available dictionaries.

Is it also crashing when you run this command on a console:
   $ enchant-lsmod -list-dicts
Comment 2 Bojan Smojver 2009-05-26 18:06:15 EDT
No, that works:

$ enchant-lsmod -list-dics
voikko (Voikko Provider)
myspell (Myspell Provider)
voikko (Voikko Provider)
myspell (Myspell Provider)

BTW, my language is set to English(Australia).
Comment 3 Milan Crha 2009-05-27 06:27:45 EDT
Created attachment 345592 [details]
test.c

it wasn't -list-dics, but -list-dicts  ('t' missing in your command), but I just installed enchant-voikko-1.4.2-4.fc10.x86_64 and Evolution crashes in a very same way as for you.

Interestingly enough, the test.c is the core of the function, and it works fine, same as gtkhtml-editor-test application, but calling the same from evolution, either by invoking new message or edit->preferences, crashes it.

Uninstalling enchant-voikko helps here, as that's the one where the crash occurs.
Comment 4 Matthew Barnes 2009-05-27 06:47:09 EDT
Crash appears to be coming from libmalaga.  Reassigning.
Comment 5 Ville-Pekka Vainio 2009-05-27 07:06:39 EDT
I'm the maintainer of libvoikko and libmalaga, I can look into this issue once I'll have the time. I have to admit that I'm not too familiar with the code of either libraries, especially libmalaga, but it's good you've been able to get backtraces.

A related issue is that the libmalaga upstream isn't active in developing the library anymore. If we can get the bug fixed, they might release a new version, but it's somewhat unlikely to get them to fix the code. I can inform the Voikko project about this bug, some people there are somewhat familiar with libmalaga, they might be able to help too.

For users who don't need Enchant support for the Finnish language, the best workaround for now is to uninstall the enchant-voikko package. Enchant-voikko only supports Finnish and no other languages.
Comment 6 Bojan Smojver 2009-05-27 09:51:14 EDT
Regarding comment #3, the -list-dicts works here too:

$ enchant-lsmod -list-dicts
fi (voikko)
en_BS (myspell)
en_SG (myspell)
en_IN (myspell)
en_NA (myspell)
en_ZW (myspell)
en_NG (myspell)
en_GB (myspell)
en_BZ (myspell)
en_AU (myspell)
en_HK (myspell)
en_DK (myspell)
en_GH (myspell)
en_NZ (myspell)
en_ZA (myspell)
en_CA (myspell)
en_PH (myspell)
en_US (myspell)
en_BW (myspell)
en_JM (myspell)
en_IE (myspell)
en_TT (myspell)
Comment 7 Bojan Smojver 2009-06-05 00:43:54 EDT
I removed libvoikko from the system (I don't speak Finish) and now I can see the Preference dialog in Evo.
Comment 8 Ville-Pekka Vainio 2009-06-07 11:50:14 EDT
Bug filed against libvoikko, they are not the libmalaga upstream but I hope someone of the Voikko developers could help in getting this bug fixed.

https://sourceforge.net/tracker/?func=detail&aid=2802548&group_id=156731&atid=800960
Comment 9 Ville-Pekka Vainio 2009-06-07 17:27:11 EDT
I did some debugging and I'm having trouble believing my own eyes here. Before the segfaulting check_header function is called, the header data is fetched by calling map_file, which is in malaga's files.c file.

But for whatever reason, when the evolution-mapi plugin is installed into evolution, the map_file call *gets directed to samba's implementation* at lib/util/util_file.c so it's no wonder the header data expected by malaga is not set and this causes the segfault later on. I've never seen anything like this before, please help if you have any ideas on how to fix this.
Comment 10 Bug Zapper 2009-06-09 12:33:15 EDT
This bug appears to have been reported against 'rawhide' during the Fedora 11 development cycle.
Changing version to '11'.

More information and reason for this action is here:
http://fedoraproject.org/wiki/BugZappers/HouseKeeping
Comment 11 Ville-Pekka Vainio 2009-06-10 13:18:30 EDT
As this situation was completely new to me, I did some googling. According to http://plan99.net/~mike/writing-shared-libraries.html ELF symbols have so called process scoping, so if the same symbols are exported from multiple libraries linked in to the same process, the wrong symbol can be called and this is apparently what happened here.

A Voikko developer has provided a patch to rename the (un)map_file functions in libmalaga at https://sourceforge.net/tracker/?func=detail&atid=800960&aid=2802548&group_id=156731

I'll build new libmalaga packages with this patch in the next few days.
Comment 12 Matthew Barnes 2009-06-10 13:26:55 EDT
Either those functions need to be declared static in libmalaga's source code or they need to use a proper namespace for the symbols they export.  Something like malaga_map_file() instead of just map_file().
Comment 13 Matthew Barnes 2009-06-10 13:29:01 EDT
Ah nevermind, that's exactly what the patch does.  Good.
Comment 14 Ville-Pekka Vainio 2009-06-14 15:58:59 EDT
A new package with the map_file rename patch is built in koji, will submit as a Fedora 11 update.
Comment 15 Fedora Update System 2009-06-14 16:06:41 EDT
malaga-7.12-4.fc11 has been submitted as an update for Fedora 11.
http://admin.fedoraproject.org/updates/malaga-7.12-4.fc11
Comment 16 Fedora Update System 2009-06-18 07:54:40 EDT
malaga-7.12-4.fc11 has been pushed to the Fedora 11 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update malaga'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/F11/FEDORA-2009-6644
Comment 17 Fedora Update System 2009-06-26 23:02:01 EDT
malaga-7.12-4.fc11 has been pushed to the Fedora 11 stable repository.  If problems still persist, please make note of it in this bug report.

Note You need to log in before you can comment on or make changes to this bug.