A.L.E.C napisał(a):
wcześniej na to nie wpadłem, to oczywiste rozwiązanie) i inne poprawki np. "worker thread' idzie gdy fval > 0, a nie fval==0 (w tym przypadku powstawały zombie)
Jezu. fval=fork() zrwaca nastepujace wartosci: fval<0 - gdy sie nieudal i zostajemy z jednym procesem. fval==0 - gdy jestesmy w procesie potomnym fval>0 - (a dokladnie pid zrodzonego potomka) gdy jestesmy w procesie maciezystym. Worker thread to jest wlasnie ten proces w ktorym fval==0.
if( fval > 0 ) { to jest parent); if( fval==0) { a to jest child };
fval = quit ? 1 : fork();
A to jest wogole bez sensu.
zombiesy ci sie robia bo nie dodales najwazniejszej rzeczy w calym patchu: funkcji sig_chld i wywloalnia sigaction.
najlepiej bedzie jak sie wycofasz lmsd.c spowrotem do wersji 1.6 i nalozysz tego patcha takiego jak jest.
lmsd z moim patchem chodzi na 2 z moich serwerow od ponad tygodnia i nie mam z nim zadnych problemow.
Grzegorz Stanislawski