bogofilter/bogoutil concurrency crash?

David Relson relson at osagesoftware.com
Mon Apr 7 06:16:16 CEST 2003


Jim,

You've been busy!  Making progress, too.  That's great.

Just post the patch to the mailing list.  I'll get it and can test 
it.  Others will get it, too, and maybe they'll test it.

I'm very curious to see what you've found, as the locking code hasn't been 
changed in a while.  (In a quick check of some older versions of 
datastore_db.c, I don't see any significant differences from 2 months ago).

I'm looking forward to seeing/testing your patch to learn more about what 
you've found.

David

At 09:10 PM 4/6/03, Jim Correia wrote:

>On Sunday, April 6, 2003, at 10:21  PM, David Relson wrote:
>
>>Nope.  It doesn't help.  The proper behavior is for the second bogofilter 
>>to wait for the first bogofilter to release the file lock.
>>If the lock isn't released in a while (see the code for the randomizing 
>>of wait times), the second bogofilter should give an error exit (which 
>>procmail will notice if you have the "errcode 75" check in your procmailrc).
>>
>>The segfault you're getting from the manual run is (probably) the same as 
>>"make check" generates and is a locking problem on OS-X.
>
>David,
>
>I am slow driving gdb in the terminal, but it looks like there are some 
>legitimate bugs in db_open (it peeks at disposed memory and it looks like 
>it does the wrong thing when db_lock returns EAGAIN).
>
>I've fixed them here. My problem is gone, and all tests now pass.
>
>What is the best way to submit a patch? (Can I send you datastore_db.c, or 
>do you want a patch file, etc?)
>
>Jim
>
>make  check-TESTS
>PASS: t.env
>PASS: t.ignore_spam_header
>PASS: t.integrity
>PASS: t.integrity2
>PASS: t.integrity3
>PASS: t.lexer
>./t._abort: line 6:  3627 Abort trap              ( ./abortme )
>PASS: t.abort
>PASS: t.lock1
>PASS: t.lock2
>PASS: t.nullstatsprefix
>PASS: t.score1
>PASS: t.score2
>===================
>All 12 tests passed
>===================
>Making check in bogoutil
>make  check-TESTS
>Running test 1
>Running test 2
>Running test 3
>Found a message count of [4] in db. Throwing away text file count of [1]
>Running test 4
>This database appears to have been upgraded already.
>But there's no harm in doing it again.
>PASS: driver.sh
>PASS: t.dump.load
>PASS: t.nonascii.replace
>==================
>All 3 tests passed
>==================
>Making check in bogofilter
>make  check-TESTS
>PASS: t.lexer.mbx
>PASS: t.regtest
>PASS: t.robx
>SKIP: t.valgrind
>PASS: t.split
>PASS: t.systest
>PASS: t.grftest
>======================
>All 6 tests passed
>(1 tests were not run)
>======================
>Making check in .
>make[1]: Nothing to be done for `check-am'.
>Making check in doc
>make[1]: Nothing to be done for `check'.
>Making check in contrib
>make[1]: Nothing to be done for `check'.
>
>
>---------------------------------------------------------------------
>FAQ: http://bogofilter.sourceforge.net/bogofilter-faq.html
>To unsubscribe, e-mail: bogofilter-dev-unsubscribe at aotto.com
>For summary digest subscription: bogofilter-dev-digest-subscribe at aotto.com
>For more commands, e-mail: bogofilter-dev-help at aotto.com





More information about the bogofilter-dev mailing list