Synchronisierung von Threads funktioniert nicht
Supportdatenbank (aj_pthread7.0)
Bezieht sich auf
SuSE Linux: Version 7.0
Dieser Artikel bezieht sich auf eine ältere SuSE Linux Version.
Daher ist es möglich, dass die Informationen in diesem Artikel
nicht mehr auf dem neuesten Stand sind bzw. der Artikel nicht
mehr funktionierende Links enthält.
Symptom:
Synchronisierung von Programmen, die Threads benutzen,
schlägt fehl.
Betroffen sind nur Programme, die die Bibliothek libpthread.so benutzen.
Dies läßt sich mit ldd überprüfen, z.B.:
ldd /bin/progam
taucht libpthread.so in der Ausgabe auf, dann kann dieses Programm
Probleme haben.
Ursache:
Die pthread Bibliothek hat einen Fehler in der Mutex-Implementierung.
Betroffene Systeme sind SuSE 7.0 für ix86 und für Sparc. Andere Plattformen
sind nicht betroffen.
Lösung:
Auf dem FTP-Server sind neue Pakete shlibs und libc, die das Problem
beheben.
Alternativ kann ein anderer Mutex (nur der "normale" ist fehlerhaft) benutzt
werden, beispielsweise mit:
pthread_mutexattr_settype (&mutattr, PTHREAD_MUTEX_ERRORCHECK_NP);
Ein Hack ist die Benutzung von LD_LIBRARY_PATH um nur libpthread.so zu
ersetzen. Dazu muß die korrigierte libpthread.so auf dem System existieren
und die Environment-Variable LD_LIBRARY_PATH den Pfad enthalten, der
libpthread.so enthält. Dann kann das Programm gestartet werden.
Stichwörter: GLIBC, THREADS, PTHREAD, MUTEX
Feedback willkommen: Send Mail to aj@suse.de (Geben Sie bitte folgendes Stichwort an: SDB-aj_pthread7.0
)
SDB-aj_pthread7.0, Copyright SuSE Linux AG, Nürnberg, Germany
- Version: 22. Aug 2000
SuSE Linux AG - Zuletzt generiert: 24. Aug 2000 von aj (sdb_gen 1.40.0)