[Th] OpenOffice przestało mi się uruchamiać (z wynikami śledztwa , bez rozwiązania )

Łukasz Maśko ed w yen.ipipan.waw.pl
Pon, 28 Kwi 2008, 12:09:25 CEST


Pisałem w ubiegłym tygodniu na pld-users-pl, że przestało mi się uruchamiać 
OOo, zapewne po którymś z update'ów. Nie umiem powiedzieć, po którym 
dokładnie, dlatego nie znam przyczyny. Udało mi się zrobić strace OOo 
uruchamianego przez kliknięcie na ikonkę obsługiwanego przez nie pliku (w 
tym przypadku to prezentacja Impress). Zrobiłem to za pomocą 
skryptu-wrappera, który wygląda tak:

#!/bin/bash
strace -f /usr/lib/openoffice.org/program/soffice -impress "$@" >~/log 2>&1

Na prośbę podeślę cały trace, nie chcę zaśmiecać listy. To co jest w nim 
istotne, to pojawiający się w pewnym momencie taki fragment:

[...]
[pid  5468] open("/usr/lib/libXt.so.6", O_RDONLY) = 3
[pid  5468] 
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\274\0\0004\0\0\0"..., 
512) = 512
[pid  5468] fstat64(3, {st_mode=S_IFREG|0755, st_size=310196, ...}) = 0
[pid  5468] mmap2(NULL, 314836, PROT_READ|PROT_EXEC, MAP_PRIVATE|
MAP_DENYWRITE, 3, 0) = 0xb3ad5000
[pid  5468] mmap2(0xb3b1e000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|
MAP_FIXED|MAP_DENYWRITE, 3, 0x48) = 0xb3b1e000
[pid  5468] close(3)                    = 0
[pid  5468] mprotect(0xb3b22000, 4096, PROT_READ|PROT_WRITE) = 0
[pid  5468] mprotect(0xb3b22000, 4096, PROT_READ|PROT_EXEC) = 0
[pid  5468] mprotect(0xb3b24000, 12242944, PROT_READ|PROT_WRITE) = 0
[pid  5468] mprotect(0xb3b24000, 12242944, PROT_READ|PROT_EXEC) = 0
[pid  5468] mprotect(0xb4869000, 4096, PROT_READ) = 0
[pid  5468] mprotect(0xb4895000, 561152, PROT_READ|PROT_WRITE) = 0
[pid  5468] mprotect(0xb4895000, 561152, PROT_READ|PROT_EXEC) = 0
[pid  5468] mprotect(0xb49fb000, 4096, PROT_READ) = 0
[pid  5468] mprotect(0xb4a38000, 4096, PROT_READ) = 0
[pid  5468] mprotect(0xb4a63000, 4096, PROT_READ) = 0
[pid  5466] <... poll resumed> [{fd=4, events=POLLIN}], 1, 50) = 0
[pid  5466] select(6, [5], [5], NULL, NULL) = 1 (out [5])
[pid  5466] writev(5, 
[{"8\2\4\0\2\0\200\0\4\0\0\0\323\323\323\0C\0\5\0\1\0\200\0\2\0\200\0\f\0\f\1"..., 
72}], 1) = 72
[pid  5466] read(5, 0x8050a1c, 4096)    = -1 EAGAIN (Resource temporarily 
unavailable)
[pid  5466] read(5, 0x8050a1c, 4096)    = -1 EAGAIN (Resource temporarily 
unavailable)
[pid  5466] poll( <unfinished ...>
[pid  5468] mprotect(0xb53e2000, 53248, PROT_READ) = 0
[pid  5468] mprotect(0xb566d000, 159744, PROT_READ) = 0
[pid  5468] --- SIGSEGV (Segmentation fault) @ 0 (0) ---

Proces o PID 5468 to w tym momencie soffice.bin, sporo wcześniej są takie 
wpisy:

[pid  5467] clone(Process 5468 attached
child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, 
child_tidptr=0xb77cbbd8) = 5468
[...]
[pid  5468] execve("/usr/lib/openoffice.org/program/soffice.bin", 
["/usr/lib/openoffice.org/program/"..., "-impress"..., "/home/users/ed/Desktop/simplemat"..., "-splash-pipe=5"...], 
[/* 41 vars */] <unfinished ...>

Ta sama aplikacja odpalona tak samo ręcznie z linii poleceń działa 
bezproblemowo. Wyczyściłem całą konfigurację OOo o jakiem mi wiadomo, że 
siedzi w katalogu użytkownika. Dodatkowo odpaliłem KDE na nowym, 
czyściutkim koncie - efekt dokładnie ten sam. Nie jest to więc wina 
konfiguracji.

Dla porównania, analogiczny fragment strace dla tej samej aplikacji 
uruchomionej z palca wygląda tak:

[...]
[pid  5920] open("/usr/lib/libXt.so.6", O_RDONLY) = 3
[pid  5920] 
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\360\274\0\0004\0\0\0"..., 
512) = 512
[pid  5920] fstat64(3, {st_mode=S_IFREG|0755, st_size=310196, ...}) = 0
[pid  5920] mmap2(NULL, 314836, PROT_READ|PROT_EXEC, MAP_PRIVATE|
MAP_DENYWRITE, 3, 0) = 0xb3ad2000
[pid  5920] mmap2(0xb3b1b000, 16384, PROT_READ|PROT_WRITE, MAP_PRIVATE|
MAP_FIXED|MAP_DENYWRITE, 3, 0x48) = 0xb3b1b000
[pid  5920] close(3)                    = 0
[pid  5920] mprotect(0xb3b1f000, 4096, PROT_READ|PROT_WRITE) = 0
[pid  5920] mprotect(0xb3b1f000, 4096, PROT_READ|PROT_EXEC) = 0
[pid  5920] mprotect(0xb3b21000, 12242944, PROT_READ|PROT_WRITE) = 0
[pid  5920] mprotect(0xb3b21000, 12242944, PROT_READ|PROT_EXEC) = 0
[pid  5920] mprotect(0xb4866000, 4096, PROT_READ) = 0
[pid  5920] mprotect(0xb4892000, 561152, PROT_READ|PROT_WRITE) = 0
[pid  5920] mprotect(0xb4892000, 561152, PROT_READ|PROT_EXEC) = 0
[pid  5920] mprotect(0xb49f8000, 4096, PROT_READ) = 0
[pid  5920] mprotect(0xb4a35000, 4096, PROT_READ) = 0
[pid  5920] mprotect(0xb4a60000, 4096, PROT_READ) = 0
[pid  5918] <... poll resumed> [{fd=4, events=POLLIN}], 1, 50) = 0
[pid  5918] select(6, [5], [5], NULL, NULL) = 1 (out [5])
[pid  5918] writev(5, 
[{"8\2\4\0\2\0\200\0\4\0\0\0\323\323\323\0C\0\5\0\1\0\200\0\2\0\200\0\f\0\f\1"..., 
72}], 1) = 72
[pid  5918] read(5, 0x80509ec, 4096)    = -1 EAGAIN (Resource temporarily 
unavailable)
[pid  5918] read(5, 0x80509ec, 4096)    = -1 EAGAIN (Resource temporarily 
unavailable)
[pid  5918] poll( <unfinished ...>
[pid  5920] mprotect(0xb53df000, 53248, PROT_READ) = 0
[pid  5920] mprotect(0xb566a000, 159744, PROT_READ) = 0
[pid  5920] munmap(0xb6da0000, 114531)  = 0
[pid  5920] gettimeofday({1209376610, 751505}, NULL) = 0
[pid  5920] open("/dev/zero", O_RDWR)   = 3
[...]

Wywraca się przy wykonywaniu munmap(). No i teraz pytanie - czy ktoś ma 
pomysł, co mu się nie podoba? Najgorsze jest to, że na innym kompie, o 
praktycznie bliźniaczej konfiguracji programowej, wszystko działa jak 
należy. Różnica jest tylko w sprzęcie - dobrze jest na naptopie ze starym 
P4/2.4GHz, a wywraca się na Dell-u z Xeonem Quad E5410.

-- 
Łukasz Maśko                                           GG:   2441498    _o)
Lukasz.Masko(at)ipipan.waw.pl                                           /\\
Registered Linux User #61028                                           _\_V
Ubuntu: staroafrykańskie słowo oznaczające "Nie umiem zainstalować Debiana"


Więcej informacji o liście dyskusyjnej pld-devel-pl