[Berlin-wireless] [Olsr-core] dyn_gw
Jo-Philipp Wich
freifunk
Di Nov 25 15:58:37 CET 2008
Hallo Sven-Ola,
> ach richtig - jetzt faellt der Groschen. Ich hatte mir letztens eine frische
> FFLuCI gezogen. War verwundert, dass man nur mit "olsrd -nofork" starten
> kann.
Jedes Programm welches daemon() aus uClibc/unistd aufruft und danach ein pthread_create()
macht produziert einen Deadlock. OLSR betrifft das wenn BMF (oder dyngw) geladen ist.
Andere Programme mit diesem Problem sind owfs (eigtl. alle libfuse-User), stunnel,
matrixtunnel, asterisk u.v.m.
Ich habe gestern Nacht in #freifunk einiges dazu geschrieben.
Es gibt vier Workarounds:
1) revert auf uClibc 0.9.28
2) in der betroffenen Applikation den Call von daemon() durch den Code aus daemon()
ersetzen, bzw. nachimplementieren (irgendwelcher fork() Foo wenn innerhalb von libc
aufgerufen)
3) den Prozess im Vordergrund starten und mit anderen Mitteln daemonisieren
(olsrd -nofork & oder start-stop-daemon)
4) libpthread loswerden ;)
~ JoW
Mehr Informationen über die Mailingliste Berlin