[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