openldap - slurpd nie działa jako demon
Jakub Bogusz
qboosh w pld.org.pl
Pią, 22 Lut 2002, 19:57:26 CET
Kiedyś (w listopadzie) już to było poruszane, a nadal jest aktualne.
slurpd nie działa jako demon - tzn. startuje, ale nie replikuje bazy
LDAP. Uruchomiony w trybie debug (bez demonizowania, z logami na
stdout/stderr) działa. Uruchomiony w trybie debug bez wypisywania
czegokolwiek (-d 0), sztucznie zdemonizowany za pomocą setsid
i przekierowania deskroptorów 0-2 na /dev/null działa.
Wtedy kiedy replikowanie (pojedyncze) działa, ps pokazuje 4 wątki
slurpd, kiedy nie działa - 3.
Wygląda na to (jeszcze nie sprawdziłem jednoznacznie), że w trybie
demona szkodzi fork/exit. Program to robi brzydko, bo używa wątków
(pthread), i w momencie forkowania ma już potworzonych trochę muteksów.
Ale slapd robi to samo, a działa... więc to może być coś innego.
strace pokazało, że wtedy kiedy slurpd źle działa, przy starcie widać,
że wysyła sygnał SIGRTMIN do procesu sprzed fork/exec (już nie
istniejącego); w przypadku slapd tak nie jest - i to na razie jedyny
ślad... jeszcze nie udało mi się dojść dlaczego tak jest.
Może macie jakieś koncepcje?
Aha, przerabianie slurpd tak, by używał funkcji z libpthread dopiero po
fork/exec to kupa roboty, więc dla samych testów raczej odpada.
--
Jakub Bogusz http://prioris.mini.pw.edu.pl/~qboosh/
Więcej informacji o liście dyskusyjnej pld-devel-pl