[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