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)