On 2013-09-30, Yu Changyuan wrote:
>其实,我是想问一下,针对这种依赖关系的问题,有没有什么好的建议。
>不是想问libreoffice的替代,毕竟,我已经用libreoffice替代ms office了(在windows上也是如此)。
同求,我也被 glibc 害過一次,我也是 Gentoo 用戶,去年11月更新到 glibc-2.16.0,可能是那時候起幾乎所有32位程序都無法運行了。
之後升級到 2.17.0,發現還是有問題……因爲不能降級所以不知道怎麼辦了
嘗試過的一些檢測手段
% strace -f skype |& tail -n20
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff4ae6000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff4ae5000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff4ae4000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xfffffffff4ae3000
set_thread_area(0xffffbdc0) = 0
mprotect(0xf55b3000, 8192, PROT_READ) = 0
mprotect(0xf4afa000, 4096, PROT_READ) = 0
mprotect(0xf4b00000, 4096, PROT_READ) = 0
mprotect(0xf7ecf000, 4096, PROT_READ) = 0
mprotect(0xf4b09000, 4096, PROT_READ) = 0
mprotect(0xf5721000, 4096, PROT_READ) = 0
mprotect(0xf4b0d000, 4096, PROT_READ) = 0
mprotect(0xf4b33000, 4096, PROT_READ) = 0
mprotect(0xf4be3000, 20480, PROT_READ) = 0
mprotect(0xf4c05000, 8192, PROT_READ) = 0
mprotect(0xf4c0c000, 4096, PROT_READ) = 0
mprotect(0xf4c13000, 4096, PROT_READ) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x58d6} ---
+++ killed by SIGSEGV +++
[1] 2119 segmentation fault strace -f skype 2>&1 |
2120 done tail -n $((${LINES:-`tput lines 4>/dev/null||echo -n 12`} - 3)) -n20
% strace -f wine console |& tail -n20
futex(0xf7c2d050, FUTEX_WAKE_PRIVATE,
2147483647) = 0
open("/usr/bin/../lib32/wine/
ntdll.dll.so", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\n\302{4\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=689372, ...}) = 0
mmap2(0x7bc00000, 769012, PROT_READ|PROT_EXEC,
MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7bc00000
mmap2(0x7bc9f000, 45056, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x9e000) = 0x7bc9f000
mmap2(0x7bcaa000, 72692, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7bcaa000
close(3) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=225753, ...}) = 0
mmap2(NULL, 225753, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7efc8000
close(3) = 0
open("/lib32/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3,
"\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0`Y\0\0004\0\0\0"...,
512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=263644, ...}) = 0
mmap2(NULL, 266384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3,
0) = 0x7ef86000
mmap2(0x7efc6000, 8192, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3f000) = 0x7efc6000
close(3) = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x58d6} ---
+++ killed by SIGSEGV +++
[1] 2192 segmentation fault strace -f wine console 2>&1 |
2193 done tail -n $((${LINES:-`tput lines
4>/dev/null||echo -n 12`} - 3)) -n20
% sudo su -c 'echo 0 > /proc/sys/kernel/randomize_va_space'
% skype
[1] 2436 segmentation fault skype
% dmesg | tail -n 1
[34882.291454] skype[2436]: segfault at 58d6 ip 00000000000058d6 sp 00000000ffffbcfc error 14 in skype[56555000+1d30000]
% wine console
[1] 2500 segmentation fault wine console
% dmesg | tail -n 1
[34892.932415] wine[2500]: segfault at 58d6 ip 00000000000058d6 sp 00000000ffffb53c error 14
% gdb -d glibc-2.17/elf /opt/bin/skype
Reading symbols from /opt/bin/skype...(no debugging symbols found)...done.
(gdb) r
Starting program: /opt/bin/skype
warning: the debug information found in "/usr/lib64/debug/lib64/ld-2.17.so.debug" does not match "/lib/ld-linux.so.2" (CRC mismatch).
warning: Could not load shared library symbols for linux-gate.so.1.
Do you need "set solib-search-path" or "set sysroot"?
Program received signal SIGSEGV, Segmentation fault.
0x000058d6 in ?? ()
(gdb) up 2
#2 0xf7fdf083 in dl_main (phdr=0x56555034, phnum=9, user_entry=0xffffbeac, auxv=0xffffc0d8) at rtld.c:2203
2203 _dl_relocate_object (l, l->l_scope, GLRO(dl_lazy) ? RTLD_LAZY : 0,
(gdb) bt
#0 0x000058d6 in ?? ()
#1 0xf55f3734 in ?? ()
#2 0xf7fdf083 in dl_main (phdr=0x56555034, phnum=9, user_entry=0xffffbeac, auxv=0xffffc0d8) at rtld.c:2203
#3 0xf7ff1448 in _dl_sysdep_start (start_argptr=start_argptr@entry=0xffffbf40, dl_main=dl_main@entry=0xf7fdd790 <dl_main>) at ../elf/dl-sysdep.c:241
#4 0xf7fe0bf2 in _dl_start_final (arg=0xffffbf40) at rtld.c:331
#5 _dl_start (arg=0xffffbf40) at rtld.c:557
#6 0xf7fdd1f7 in _start () from /lib/ld-linux.so.2
(gdb)
後來發現似乎所有 X11 程序都有問題,慢慢地終於發現罪魁禍首 /lib32/
libm-2.17.so 的一些庫函數會導致 segfault,
找了一台 Ubuntu 12.04.1 的 libm.so 覆蓋了 /lib32/
libm-2.17.so 總算好了
>2013/9/30 Ray Song <
i...@maskray.me>
>
>> On 2013-09-30, Yu Changyuan wrote:
>>
>>> 一直以来,由于libreoffice(openoffice)**编译起来太慢,所以用的是gentoo预编译的二进制版本,**
>>> 即libreoffice-bin。
>>> 今天发现,libreoffice-bin无论如何是不行了:
>>>
>>> app-office/libreoffice-bin-4.**0.4.2依赖boost-1.49.*
>>> 而boost-1.49.*依赖 glibc < 2.16
>>>
>>> 目前我系统上的glibc的版本是2.17,**而gentoo上无论如何都不支持降glibc版本的。
>>>
>>> 这不是逼我自己编译openoffice吗?
>>>
>>> 大家有没有什么好的建议?抱怨一下,**这就是Gentoo用户的烦恼。
>>>
>>
>> 使用 libreoffice-bin 是爲了看 .doc .ppt 之類的吧
>>
>是的,但是有的时候也需要创建.doc和.ppt(无奈)
>说起来有些虚伪,但确实不想用非开源的东西
>wv已经在用了,catdoc应该也是类似的东西吧
>
>>
>> 如果是要創建文檔的話,根據需要可以用
>>
>> - Google Docs
>>
>在线的东西,即使是google的,也不太想用:
>1. 在线,就是说离线用不了了
>2. 总有点不太放心(心理作用)
>
>> - Pandoc/Org Mode Markdown/Org Mode/rST/.....
>>
>org mode在用
>
>> - HTML5 presentation framework 比如 jmpress.js / reveal.js
>>
>reveal.js在用
>
>> -
http://wiki.inkscape.org/wiki/**index.php/Tools#svgslides<
http://wiki.inkscape.org/wiki/index.php/Tools#svgslides>
>>
>inkscape很好用,我在windows上也用
>
>> - Rabbit
http://rabbit-shocker.org/
>
>这个没听过
>
>--
>Best regards,
>Changyuan