Bug 29705

Summary: uim 1.6.0: uim-module-manager doesn't work properly if --libexecdir is specified different dir.
Product: UIM Reporter: Masato Hashimoto <cabezon.hashimoto>
Component: OtherAssignee: uim-bugs
Status: RESOLVED INVALID QA Contact:
Severity: critical    
Priority: medium    
Version: unspecified   
Hardware: x86-64 (AMD64)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments: full log of building uim with --enable-debug
Build log of --enable-debug --disable-warnings-into-error

Description Masato Hashimoto 2010-08-20 08:47:39 UTC
Overview:
If uim is build with --libexecdir=/usr/lib/uim, uim-module-manager --register/unregister doesn't work.

Steps to Reproduce (I confirmed):
1) Build and install uim. Build options are as follows:
    ./configure --prefix=/usr --libexecdir=/usr/lib/uim --with-anthy-utf8 --without-anthy --disable-gnome-applet
2) Build and install mozc and uim-mozc
3) Run uim-module-manager --register mozc

Actual Results:
The following massage appeared:
> libuim: [fatal] dynlib: libuim.so.6: cannot open shared object file: No such file or directory: Load failed.

Additional Info:
If --libexecdir= isn't specified, uim-module-manager --register works properly.

Build & Platform:
Build 2010--8-21 on Arch Linux

Versions:
uim 1.6.0
Comment 1 Etsushi Kato 2010-08-21 10:13:13 UTC
I don't think libexecdir is the cause of change in the behavior of uim-module-maneger as the directory is not used for the process of registering modules.

Could you show the output of ldd /usr/lib*/uim/plugin/libuim-mozc.so?
Comment 2 Masato Hashimoto 2010-08-21 10:43:54 UTC
The result of ldd is as follow:

$ ldd /usr/lib/uim/plugin/libuim-mozc.so 
	linux-vdso.so.1 =>  (0x00007fff8dfff000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00007fc75bc4e000)
	libuim-scm.so.0 => /usr/lib/libuim-scm.so.0 (0x00007fc75ba28000)
	libuim.so.7 => /usr/lib/libuim.so.7 (0x00007fc75b810000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fc75b506000)
	libc.so.6 => /lib/libc.so.6 (0x00007fc75b1aa000)
	/lib/ld-linux-x86-64.so.2 (0x00007fc75c21d000)
	libgcroots.so.0 => /usr/lib/libgcroots.so.0 (0x00007fc75afa7000)
	libdl.so.2 => /lib/libdl.so.2 (0x00007fc75ada3000)
	libm.so.6 => /lib/libm.so.6 (0x00007fc75ab21000)
	libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fc75a90a000)

uim 1.5.7 (--libexecdir=/usr/lib/uim), mozc r38 and uim-mozc work has no problem.
Comment 3 Etsushi Kato 2010-08-21 22:51:52 UTC
(In reply to comment #2)
> The result of ldd is as follow:
> 
> $ ldd /usr/lib/uim/plugin/libuim-mozc.so 
>     linux-vdso.so.1 =>  (0x00007fff8dfff000)
>     libpthread.so.0 => /lib/libpthread.so.0 (0x00007fc75bc4e000)
>     libuim-scm.so.0 => /usr/lib/libuim-scm.so.0 (0x00007fc75ba28000)
>     libuim.so.7 => /usr/lib/libuim.so.7 (0x00007fc75b810000)
>     libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fc75b506000)
>     libc.so.6 => /lib/libc.so.6 (0x00007fc75b1aa000)
>     /lib/ld-linux-x86-64.so.2 (0x00007fc75c21d000)
>     libgcroots.so.0 => /usr/lib/libgcroots.so.0 (0x00007fc75afa7000)
>     libdl.so.2 => /lib/libdl.so.2 (0x00007fc75ada3000)
>     libm.so.6 => /lib/libm.so.6 (0x00007fc75ab21000)
>     libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fc75a90a000)

OK.  Compilation of libuim-mozc.so seems fine.

Odd thing is that libuim.so.6 was tried to be loaded by dlopen() in your environment.  It is completely strange.  You can find which file tried to dlopen() libuim.so.6 by compiling uim with --enable-debug, and invoking uim-module-manager with LIBUIM_VERBOSE_LEVEL=3.

# LIBUIM_VERBOSE_LEVEL=3 uim-module-manager --register mozc
Comment 4 Masato Hashimoto 2010-08-21 23:51:07 UTC
Created attachment 38057 [details]
full log of building uim with --enable-debug

Compiling uim with --enable-debug is failed. Latest messages are as follows and attached is full log:

---
g++ -DHAVE_CONFIG_H -I. -I../uim -I../replace -I../uim -I.. -I.. -DUSE_GTK_CANDWIN    -Wall -I/usr/include/freetype2   -g -O2 -pipe -W -Wall -Wchar-subscripts -Wnon-virtual-dtor -Wno-long-long -Wcast-align -Wconversion -Wpointer-arith -Wwrite-strings -Wformat-security -g -Werror -MT uim_xim-main.o -MD -MP -MF .deps/uim_xim-main.Tpo -c -o uim_xim-main.o `test -f 'main.cpp' || echo './'`main.cpp
cc1plus: warnings being treated as errors
main.cpp: In function ‘void add_window_watch(Window, WindowIf*, int)’:
main.cpp:188:48: error: conversion to ‘unsigned int’ from ‘Window’ may alter its value
main.cpp: In function ‘void remove_window_watch(Window)’:
main.cpp:206:34: error: conversion to ‘std::map<unsigned int, WindowIf*, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, WindowIf*> > >::key_type’ from ‘Window’ may alter its value
main.cpp: In function ‘WindowIf* findWindowIf(Window)’:
main.cpp:215:33: error: conversion to ‘std::map<unsigned int, WindowIf*, std::less<unsigned int>, std::allocator<std::pair<const unsigned int, WindowIf*> > >::key_type’ from ‘Window’ may alter its value
main.cpp: In function ‘void notifyLocale(XEvent*)’:
main.cpp:266:77: error: conversion to ‘int’ from ‘size_t’ may alter its value
main.cpp: In function ‘void init_supported_locales()’:
main.cpp:431:35: error: conversion to ‘int’ from ‘size_t’ may alter its value
main.cpp:447:26: error: conversion to ‘int’ from ‘size_t’ may alter its value
make[1]: *** [uim_xim-main.o] エラー 1
make[1]: ディレクトリ `/home/hashimo/sources/uim-custom/src/uim-1.6.0/xim' から出ます
make: *** [all-recursive] エラー 1
    Aborting...
---

My environment:
gcc 4.5.1
gtk 2.20.1
Comment 5 Etsushi Kato 2010-08-22 02:07:38 UTC
Try --enable-debug --disable-warnings-into-error
Comment 6 Masato Hashimoto 2010-08-22 06:20:15 UTC
Created attachment 38058 [details]
Build log of --enable-debug --disable-warnings-into-error

Same errors still occur.
Comment 7 Etsushi Kato 2010-08-22 17:52:08 UTC
(In reply to comment #6)
> Created an attachment (id=38058) [details]
> Build log of --enable-debug --disable-warnings-into-error

From the build log, you don't seem to set --disable-warnings-into-error properly.  Please check config.log.
Comment 8 Masato Hashimoto 2010-08-23 06:07:34 UTC
(In reply to comment #7)
> From the build log, you don't seem to set --disable-warnings-into-error
> properly.  Please check config.log.

Sorry, you are right.

And I have to say sorry again.
After building uim with/without debug options today, this problem never occurred.
Though I confirmed the problem several times, I seem to have made something mistakes at that time.

Sorry for my noise.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.