Torsten Werner wrote:
Gibt es Unterschiede beim strace'n ?
Das ist leider nicht so einfach herauszufinden.
Normalerweise wird das Binary von einem Skript mit: 'exec ${BIN} "$@"' aufgerufen. 'strace $Skript' geht daher nicht. :-(
Beim direkten Aufruf des Binarys als root oder notes bekomme ich keine Fehlermeldung zu libpthread zu sehen. Scheinbar ist hier alles in Ordnung.
ein strace darauf als root: --------------- # strace /opt/lotus/notes/latest/linux/http ... open("/opt/lotus/notes/latest/linux/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory) open("/etc/ld.so.cache", O_RDONLY) = 4 fstat64(4, {st_mode=S_IFREG|0644, st_size=32422, ...}) = 0 mmap2(NULL, 32422, PROT_READ, MAP_PRIVATE, 4, 0) = 0x41066000 close(4) = 0 open("/lib/libpthread.so.0", O_RDONLY) = 4 read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0@D\0\000"..., 1024) = 1024 fstat64(4, {st_mode=S_IFREG|0755, st_size=102052, ...}) = 0 mmap2(NULL, 81292, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0x4106e000 mprotect(0x4107b000, 28044, PROT_NONE) = 0 mmap2(0x4107b000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0xd) = 0x4107b000 close(4) = 0 ... write(1, "Lotus Notes: error 0x111\r\n\r\n", 28Lotus Notes: error 0x111
) = 28 munmap(0x41066000, 4096) = 0 _exit(-1) = ? -------------------
Wird mit: 'Lotus Notes: error 0x111' quitiert.
Als User notes ähnlich: open("/lib/libpthread.so.0", O_RDONLY) = 3 Lotus Notes: error 0x1007
Strace im skript eingebaut: -- exec ${BIN} "$@" ++ exec strace ${BIN} "$@"
ergibt folgendes: strace: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory
Jetzt fehlt schon bei strace eine Lib.
Skript-Debug-Modus entdeckt, aktiviert und festgestellt ,daß env, sort und diff am Anfang des Skriptes noch funktionieren und am Ende nicht mehr -> Fehlermeldung wie bei strace (libc fehlt)
Prophylaktisch einige env-Aufrufe eingebaut: env > /dev/null && echo ENV-OK step x || echo ENV-ERROR step x
und Übeltäter entdeckt: 'export LD_ASSUME_KERNEL=2.2.5' verursacht den Fehler. Kommentar dazu im Skript: # Set variable to work around issue with memory stack in glibc 2 # which Java cannot handle - once it can, then disable this
OK, auskommentiert - Programm startet, rennt aber in einer Endlosschleife mit ständigem 'Segmentation fault'
Wie komm ich hier weiter? Was beeinflußt diese Variable überhaupt?
Ich werd' jetzt erstmal bei Java weitersuchen, denn auf der funktionierenden Maschine ist kein Java drauf. Lotus nutzt damit das selbst mitgebrachte. Auf der anderen ist sowohl IBM als auch Sun Java2-1.3.1 drauf, wobei die Symlinks java, java2 auf Sun zeigen.
Es gibt wieder mal Konflikte zwischen den verschiedenen Versionen, aber das kommt mir schon bekannt vor.
Danke erstmal für die Denkanstöße.
Rico