Re: [Noffle-devel] [ noffle-Bugs-624357 ] SEGV during concurrent access.
Brought to you by:
bears
From: Mirko L. <mir...@we...> - 2002-10-21 16:49:39
|
no...@so... wrote: > Bugs item #624357, was opened at 2002-10-16 16:14 > Initial Comment: > My noffle 1.1.2 crashed during fetch. This happened > crashed. I could not find any core dump lying around. It should be at /var/spool/noffle/core. Maybe the creation of core files has been switched off by a ulimit command. > This is not the only problem I had with concurrent > access. I am using an automated script to archive > news.answers using NNTP STAT followed by a NEXT loop > until it gets a 223. Several times I read news while > the script was running and it bailed out because it > noticed the article ID had been reset to the first > article in the group instead of being increased by NEXT > to the next available article. I added some additional Log_inf() calls to src/server.c:doNext(), Server_flushCache(), changeToGrp() and src/lock.c:lockSignal(). Then I used two server processes to loop through the articles of different groups in the aforementioned way. Here's what I got (sorry for the long lines): Oct 21 17:48:25 mliss noffle[7263]: Starting as server Oct 21 17:48:25 mliss noffle[7264]: Starting as server Oct 21 17:48:25 mliss noffle[7263]: ChangeToGrp 'de.alt.sysadmin.recovery' from 'de.alt.sysadmin.recovery' Oct 21 17:48:25 mliss noffle[7263]: doNext(): artPtr 54853; grp de.alt.sysadmin.recovery Oct 21 17:48:25 mliss noffle[7263]: doNext(): artPtr 54883; grp de.alt.sysadmin.recovery [..proc 7263 iterates through the articles but is stopped by SIGUSR1 after article 60439..] Oct 21 17:48:26 mliss noffle[7263]: doNext(): artPtr 60438; grp de.alt.sysadmin.recovery Oct 21 17:48:26 mliss noffle[7263]: lockSignal sig: 10 Oct 21 17:48:26 mliss noffle[7263]: doNext(): artPtr 60439; grp de.alt.sysadmin.recovery Oct 21 17:48:26 mliss noffle[7263]: Server_flushCache() called Oct 21 17:48:26 mliss noffle[7264]: ChangeToGrp 'de.alt.netdigest' from 'de.alt.netdigest' Oct 21 17:48:26 mliss noffle[7264]: doNext(): artPtr 9222; grp de.alt.netdigest Oct 21 17:48:26 mliss noffle[7264]: doNext(): artPtr 9223; grp de.alt.netdigest [..proc 7264 iterates through the articles. Article 9316 is the last one..] Oct 21 17:48:26 mliss noffle[7264]: doNext(): artPtr 9316; grp de.alt.netdigest Oct 21 17:48:26 mliss noffle[7264]: Server_flushCache() called Oct 21 17:48:26 mliss noffle[7263]: ChangeToGrp 'de.alt.sysadmin.recovery' from 'de.alt.sysadmin.recovery' Oct 21 17:48:26 mliss noffle[7263]: doNext(): artPtr 54853; grp de.alt.sysadmin.recovery I suppose the call of LoadGrpIfSelected() in src/server.c:doNext() resets server.artPtr via changeToGrp(), because src/lock.c:lockSignal() sets server.groupReady=FALSE via Server_flushCache(). I'm not sure how to get rid of that bug. Noffle's locking mechanism still looks too weird for me to understand fully. Mirko |