SA Bugzilla – Bug 2764
spamd generating zombie processes on FreeBSD
Last modified: 2004-04-29 06:24:26 UTC
Using the stock ports/mail/p5-Mail-SpamAssassin package, using spamd/spamc, and procmail (per account, NOT system-wide). FreeBSD 4.9-STABLE, perl 5.8.1 (yes really), Net::DNS 0.41 (doubt this is the problem but not sure; see below), Razor 2.36. spamd is started and there are no zombies. The instant a new piece of mail comes in, a single zombie is created (running as that username which the mail came in for) and stays there (probably until init kills it, then the process repeats). This is not a procmail problem, and our procmail rules for each account are definitely set up correctly (I'm quite well-versed in procmail :-) ). The process list in question shows spamd as the PPID of the zombie, so... Here's truss output on spamd once a new piece of Email comes in (via spamc): (null)() = 1 (0x1) accept(0x5,{ AF_INET 127.0.0.1:3482 },0xbfbff4dc) = 6 (0x6) fcntl(0x6,0x3,0x0) = 2 (0x2) fcntl(0x6,0x3,0x0) = 2 (0x2) fcntl(0x6,0x2,0x1) = 0 (0x0) gettimeofday(0xbfbff874,0x0) = 0 (0x0) getpeername(0x6,{ AF_INET 127.0.0.1:3482 },0xbfbff8dc) = 0 (0x0) open("/etc/hosts",0x0,0666) = 7 (0x7) fstat(7,0xbfbff710) = 0 (0x0) read(0x7,0x8146000,0x2000) = 2050 (0x802) close(7) = 0 (0x0) sigprocmask(0x1,0xbfbff870,0xbfbff860) = 0 (0x0) sigaction(SIGPIPE,0xbfbff808,0xbfbff7f0) = 0 (0x0) sigprocmask(0x3,0x93ecbe0,0x0) = 0 (0x0) sigprocmask(0x1,0xbfbff6e0,0xbfbff6d0) = 0 (0x0) sigaction(SIGPIPE,0xbfbff678,0xbfbff660) = 0 (0x0) sigprocmask(0x3,0x93ecbe0,0x0) = 0 (0x0) write(2,0x813a000,67) = 67 (0x43) select(0x8,0x936c0a8,0x0,0x936c0a8,0xbfbff680) = 0 (0x0) write(4,0x9387c10,79) = 79 (0x4f) sigprocmask(0x1,0xbfbff6e0,0xbfbff6d0) = 0 (0x0) sigaction(SIGPIPE,0xbfbff678,0xbfbff660) = 0 (0x0) sigprocmask(0x3,0x93ecbe0,0x0) = 0 (0x0) select(0x8,0x936c06c,0x0,0x936c06c,0xbfbff8c0) = 0 (0x0) write(4,0x9387c10,71) = 71 (0x47) sigprocmask(0x1,0xbfbff870,0xbfbff860) = 0 (0x0) sigaction(SIGPIPE,0xbfbff808,0xbfbff7f0) = 0 (0x0) sigprocmask(0x3,0x93ecbe0,0x0) = 0 (0x0) fork() = 64855 (0xfd57) close(-1) ERR#9 'Bad file descriptor' close(6) = 0 (0x0) wait4(0xffffffff,0xbfbff8dc,0x1,0x0) = 0 (0x0) SIGNAL 20 What bothers me about this is the bad file descriptor result. I have tried all of the following options in local.cf (all combined as well). None make a difference. But just to clarify: the only "additional" packages that are being used under our configuration are Razor. use_dcc 0 use_pyzor 0 use_razor2 0 use_bayes 0 skip_rbl_checks 1 dns_available no I have also tried removing -a from spamd (I believe this is synonymous with use_bayes though); no difference. Finally, here's some spamd output in our syslog, after I've enabled --debug. It should show the checks which are getting performed and may or may not help (I believe this is after I removed the above disable flags in local.cf, since they didn't make a difference): Nov 17 21:02:25 pentarou spamd[64825]: debug: daemonized. Nov 17 21:02:25 pentarou spamd[64825]: debug: Preloading modules with HOME=/tmp/spamd-64825-init Nov 17 21:02:25 pentarou spamd[64825]: debug: ignore: test message to precompile patterns and load modules Nov 17 21:02:25 pentarou spamd[64825]: debug: using "/usr/local/share/spamassassin" for default rules dir Nov 17 21:02:25 pentarou spamd[64825]: debug: using "/usr/local/etc/mail/spamassassin" for site rules dir Nov 17 21:02:26 pentarou spamd[64825]: debug: using "/tmp/spamd-64825- init/.spamassassin" for user state dir Nov 17 21:02:26 pentarou spamd[64825]: debug: bayes: no dbs present, cannot scan: /tmp/spamd-64825-init/.spamassassin/bayes_toks Nov 17 21:02:26 pentarou spamd[64825]: debug: Score set 1 chosen. Nov 17 21:02:26 pentarou spamd[64825]: debug: Initialising learner Nov 17 21:02:26 pentarou spamd[64825]: debug: bayes: Not available for scanning, only 0 spam(s) in Bayes DB < 200 Nov 17 21:02:26 pentarou spamd[64825]: debug: bayes: 64825 untie-ing Nov 17 21:02:26 pentarou spamd[64825]: debug: bayes: 64825 untie-ing db_toks Nov 17 21:02:26 pentarou spamd[64825]: debug: is Net::DNS::Resolver available? yes Nov 17 21:02:26 pentarou spamd[64825]: debug: trying (3) yahoo.de... Nov 17 21:02:26 pentarou spamd[64825]: debug: looking up MX for 'yahoo.de' Nov 17 21:02:26 pentarou spamd[64825]: debug: MX for 'yahoo.de' exists? 1 Nov 17 21:02:26 pentarou spamd[64825]: debug: MX lookup of yahoo.de succeeded => Dns available (set dns_available to hardcode) Nov 17 21:02:26 pentarou spamd[64825]: debug: is DNS available? 1 Nov 17 21:02:26 pentarou spamd[64825]: debug: all '*From' addrs: ignore@compiling.spamassassin.taint.org Nov 17 21:02:26 pentarou spamd[64825]: debug: running header regexp tests; score so far=0 Nov 17 21:02:26 pentarou spamd[64825]: debug: running body-text per-line regexp tests; score so far=1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: Razor2 is available Nov 17 21:02:26 pentarou spamd[64825]: debug: entering helper-app run mode Nov 17 21:02:26 pentarou spamd[64825]: debug: Using results from Razor v2.36 Nov 17 21:02:26 pentarou spamd[64825]: debug: Found Razor2 part: part=0 engine=4 ct=0 cf=0 Nov 17 21:02:26 pentarou spamd[64825]: debug: leaving helper-app run mode Nov 17 21:02:26 pentarou spamd[64825]: debug: Razor2 results: spam? 0 highest cf score: 0 Nov 17 21:02:26 pentarou spamd[64825]: debug: running raw-body-text per-line regexp tests; score so far=1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: running uri tests; score so far=1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: uri tests: Done uriRE Nov 17 21:02:26 pentarou spamd[64825]: debug: running full-text regexp tests; score so far=1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: Razor2 is available Nov 17 21:02:26 pentarou spamd[64825]: debug: Current PATH is: /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin Nov 17 21:02:26 pentarou spamd[64825]: debug: Pyzor is not available: pyzor not found Nov 17 21:02:26 pentarou spamd[64825]: debug: DCCifd is not available: no r/w dccifd socket found. Nov 17 21:02:26 pentarou spamd[64825]: debug: DCC is not available: no executable dccproc found. Nov 17 21:02:26 pentarou spamd[64825]: debug: all '*To' addrs: Nov 17 21:02:26 pentarou spamd[64825]: debug: RBL: success for 1 of 1 queries Nov 17 21:02:26 pentarou spamd[64825]: debug: running meta tests; score so far=1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: using "/tmp/spamd-64825- init/.spamassassin" for user state dir Nov 17 21:02:26 pentarou spamd[64825]: debug: lock: 64825 created /tmp/spamd- 64825-init/.spamassassin/auto-whitelist.lock.pentarou.parodius.com.64825 Nov 17 21:02:26 pentarou spamd[64825]: debug: lock: 64825 trying to get lock on /tmp/spamd-64825-init/.spamassassin/auto-whitelist with 0 retries Nov 17 21:02:26 pentarou spamd[64825]: debug: lock: 64825 link to /tmp/spamd- 64825-init/.spamassassin/auto-whitelist.lock: link ok Nov 17 21:02:26 pentarou spamd[64825]: debug: Tie-ing to DB file R/W in /tmp/spamd-64825-init/.spamassassin/auto-whitelist Nov 17 21:02:26 pentarou spamd[64825]: debug: auto-whitelist (db-based): ignore@compiling.spamassassin.taint.org|ip=none scores 0/0 Nov 17 21:02:26 pentarou spamd[64825]: debug: AWL active, pre-score: 1.27, mean: undef, originating-ip: undef Nov 17 21:02:26 pentarou spamd[64825]: debug: Post AWL score: 1.27 Nov 17 21:02:26 pentarou spamd[64825]: debug: DB addr list: untie-ing and unlocking. Nov 17 21:02:26 pentarou spamd[64825]: debug: DB addr list: file locked, breaking lock. Nov 17 21:02:26 pentarou spamd[64825]: debug: unlock: 64825 unlink /tmp/spamd- 64825-init/.spamassassin/auto-whitelist.lock Nov 17 21:02:26 pentarou spamd[64825]: debug: is spam? score=1.27 required=5 tests=DATE_MISSING,NO_REAL_NAME Nov 17 21:02:26 pentarou spamd[64825]: server started on port 783/tcp (running version 2.60) Nov 17 21:02:26 pentarou spamd[64825]: server pid: 64825 Nov 17 21:02:26 pentarou spamd[64825]: logmsg: server started on port 783/tcp (running version 2.60) Nov 17 21:02:26 pentarou spamd[64825]: server started on port 783/tcp (running version 2.60) Nov 17 21:02:44 pentarou spamd[64825]: logmsg: connection from localhost [127.0.0.1] at port 3482 Nov 17 21:02:44 pentarou spamd[64825]: connection from localhost [127.0.0.1] at port 3482 Nov 17 21:02:44 pentarou spamd[64855]: logmsg: info: setuid to jdc succeeded Nov 17 21:02:44 pentarou spamd[64855]: info: setuid to jdc succeeded Nov 17 21:02:44 pentarou spamd[64855]: debug: user has changed Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing Nov 17 21:02:44 pentarou spamd[64855]: debug: using "/home/jdc/.spamassassin" for user state dir Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 tie-ing to DB file R/O /home/jdc/.spamassassin/bayes_toks Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 tie-ing to DB file R/O /home/jdc/.spamassassin/bayes_seen Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: found bayes db version 2 Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: Not available for scanning, only 177 ham(s) in Bayes DB < 200 Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing db_toks Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing db_seen Nov 17 21:02:44 pentarou spamd[64855]: debug: Score set 1 chosen. Nov 17 21:02:44 pentarou spamd[64855]: logmsg: processing message <e-o12u20a3 $0unc@5ml6.zkn0> for jdc:500. Nov 17 21:02:44 pentarou spamd[64855]: processing message <e-o12u20a3 $0unc@5ml6.zkn0> for jdc:500. Nov 17 21:02:44 pentarou spamd[64855]: debug: using "/home/jdc/.spamassassin" for user state dir Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 tie-ing to DB file R/O /home/jdc/.spamassassin/bayes_toks Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 tie-ing to DB file R/O /home/jdc/.spamassassin/bayes_seen Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: found bayes db version 2 Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: Not available for scanning, only 177 ham(s) in Bayes DB < 200 Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing db_toks Nov 17 21:02:44 pentarou spamd[64855]: debug: bayes: 64855 untie-ing db_seen Nov 17 21:02:44 pentarou spamd[64855]: debug: is Net::DNS::Resolver available? yes Nov 17 21:02:44 pentarou spamd[64855]: debug: all '*From' addrs: jdc@parodius.com Nov 17 21:02:44 pentarou spamd[64855]: debug: running header regexp tests; score so far=0 Nov 17 21:02:44 pentarou spamd[64855]: debug: running body-text per-line regexp tests; score so far=4.4 Nov 17 21:02:44 pentarou spamd[64855]: debug: Razor2 is available Nov 17 21:02:44 pentarou spamd[64855]: debug: entering helper-app run mode Nov 17 21:02:44 pentarou spamd[64855]: debug: Using results from Razor v2.36 Nov 17 21:02:44 pentarou spamd[64855]: debug: Found Razor2 part: part=0 engine=4 ct=0 cf=0 Nov 17 21:02:44 pentarou spamd[64855]: debug: Found Razor2 part: part=1 engine=4 ct=0 cf=0 Nov 17 21:02:44 pentarou spamd[64855]: debug: leaving helper-app run mode Nov 17 21:02:44 pentarou spamd[64855]: debug: Razor2 results: spam? 0 highest cf score: 0 Nov 17 21:02:44 pentarou spamd[64855]: debug: running raw-body-text per-line regexp tests; score so far=4.401 Nov 17 21:02:44 pentarou spamd[64855]: debug: running uri tests; score so far=4.401 Nov 17 21:02:44 pentarou spamd[64855]: debug: uri tests: Done uriRE Nov 17 21:02:44 pentarou spamd[64855]: debug: running full-text regexp tests; score so far=5.185 Nov 17 21:02:44 pentarou spamd[64855]: debug: Razor2 is available Nov 17 21:02:44 pentarou spamd[64855]: debug: Pyzor is not available: pyzor not found Nov 17 21:02:44 pentarou spamd[64855]: debug: DCCifd is not available: no r/w dccifd socket found. Nov 17 21:02:44 pentarou spamd[64855]: debug: DCC is not available: no executable dccproc found. Nov 17 21:02:44 pentarou spamd[64855]: debug: all '*To' addrs: jdc@parodius.com Nov 17 21:02:44 pentarou spamd[64855]: debug: DNS MX records found: 1 Nov 17 21:02:44 pentarou spamd[64855]: debug: RBL: success for 1 of 1 queries Nov 17 21:02:44 pentarou spamd[64855]: debug: running meta tests; score so far=5.185 Nov 17 21:02:44 pentarou spamd[64855]: debug: auto-learn? ham=0.1, spam=12, body-hits=0.785, head-hits=4.4 Nov 17 21:02:44 pentarou spamd[64855]: debug: auto-learn: currently using scoreset 1. no need to recompute. Nov 17 21:02:44 pentarou spamd[64855]: debug: auto-learn? no: inside auto-learn thresholds Nov 17 21:02:44 pentarou spamd[64855]: debug: using "/home/jdc/.spamassassin" for user state dir Nov 17 21:02:44 pentarou spamd[64855]: debug: lock: 64855 created /home/jdc/.spamassassin/auto-whitelist.lock.pentarou.parodius.com.64855 Nov 17 21:02:44 pentarou spamd[64855]: debug: lock: 64855 trying to get lock on /home/jdc/.spamassassin/auto-whitelist with 0 retries Nov 17 21:02:44 pentarou spamd[64855]: debug: lock: 64855 link to /home/jdc/.spamassassin/auto-whitelist.lock: link ok Nov 17 21:02:44 pentarou spamd[64855]: debug: Tie-ing to DB file R/W in /home/jdc/.spamassassin/auto-whitelist Nov 17 21:02:44 pentarou spamd[64855]: debug: auto-whitelist (db-based): 1fbrfrk@concentric.com|ip=none scores 4/20.74 Nov 17 21:02:44 pentarou spamd[64855]: debug: AWL active, pre-score: 5.185, mean: 5.185, originating-ip: undef Nov 17 21:02:44 pentarou spamd[64855]: debug: add_score: New count: 5, new totscore: 25.925 Nov 17 21:02:44 pentarou spamd[64855]: debug: Post AWL score: 5.185 Nov 17 21:02:44 pentarou spamd[64855]: debug: DB addr list: untie-ing and unlocking. Nov 17 21:02:44 pentarou spamd[64855]: debug: DB addr list: file locked, breaking lock. Nov 17 21:02:44 pentarou spamd[64855]: debug: unlock: 64855 unlink /home/jdc/.spamassassin/auto-whitelist.lock Nov 17 21:02:44 pentarou spamd[64855]: debug: is spam? score=5.185 required=5 tests=AWL,BIZ_TLD,DATE_SPAMWARE_Y2K,HTML_MESSAGE Nov 17 21:02:44 pentarou spamd[64855]: logmsg: identified spam (5.2/5.0) for jdc:500 in 0.5 seconds, 7685 bytes. Nov 17 21:02:44 pentarou spamd[64855]: identified spam (5.2/5.0) for jdc:500 in 0.5 seconds, 7685 bytes.
Forgot to include the proof of the actual zombie. Here you go (I just restarted spamd, so you'll see the zombie first; note PPID of 65364 (spamc) is 64825 (spamd) for user dnsadmin (one of our users which uses SA)). $ ps -ajx | grep perl root 64825 1 64825 c7a35440 0 Is ?? 0:01.15 /usr/local/bin/perl -T -w /usr/local/bin/spamd -a -c -d --pidfile=/var/r dnsadmin 65364 64825 64825 c7a35440 0 Z ?? 0:00.00 (perl) jdc 65398 64687 65397 c7a3aec0 2 RV+ p0 0:00.00 grep perl (tcsh) $ su2 pentarou# /usr/local/etc/rc.d/spamd.sh stop spamdpentarou# /usr/local/etc/rc.d/spamd.sh start debug: Score set 0 chosen. debug: Running in taint mode, removing unsafe env vars, and resetting PATH debug: PATH included '/sbin', keeping. debug: PATH included '/bin', keeping. debug: PATH included '/usr/sbin', keeping. debug: PATH included '/usr/bin', keeping. debug: PATH included '/usr/games', keeping. debug: PATH included '/usr/local/sbin', keeping. debug: PATH included '/usr/local/bin', keeping. debug: PATH included '/usr/X11R6/bin', which doesn't exist, dropping. debug: PATH included '/root/bin', which doesn't exist, dropping. debug: Final PATH set to: /sbin:/bin:/usr/sbin:/usr/bin:/usr/games:/usr/local/sbin:/usr/local/bin spamdpentarou# exit $ ps -ajx | grep perl root 65511 1 65511 c7546940 0 Is ?? 0:01.07 /usr/local/bin/perl - T -w /usr/local/bin/spamd -a -c -d --pidfile=/var/run/spamd.pid -- syslog=local6 --debug jdc 65513 64687 65512 c7a3aec0 2 R+ p0 0:00.00 grep perl
It's just a limitation of the portability of perl's wait() support on various platforms; on BSDish ones, we get 1 zombie, max. that's reaped next time a client connects. If there's *more* than 1 zombie at any time, that's a different matter. But 1 zombie has virtually 0 effect (apart from minor unattractiveness in the ps listing ;). As such, closing WONTFIX.
One zombie is acceptable? Wow. The attitude of software developers sure has changed in the past 20 years. I believe a few historic cases of spamd spawning zombies resulted in people finding that they were gradually increasing over a period of multiple months. I've only been using this software for a couple of weeks. My point is that the code already does checks against $^O and executes other cute kludge-fixes to figure out how to properly handle such situations on Linux, but yet somehow BSD is out of the question? I find this hard to believe. The perl.com FAQ covers 2 different methods available for fixing zombies using stock perl. There's also the possibility of using Net::Daemon as a workaround. Please reconsider looking into other solutions for solving this problem. I've never seen this zombie problem appear in other pieces of perl-based software on BSD (mrtg comes to mind), so it seems awfully specific to this suite. So please do reconsider.
One additional idea: would it be too much to ask to get you folks to write a version of your signal handlers (re: SIGCHLD) that works with BSD so that we can place the patch in our ports tree? That way the patch would be specific to BSD systems only, and wouldn't be part of the stock SA/spamc/spamd base (I believe this would make both the SA developers happy while simultaneously making the BSD users happy). If not, I'll submit this idea to the FreeBSD ports maintainers and see if they can come up with something.
'I believe a few historic cases of spamd spawning zombies resulted in people finding that they were gradually increasing over a period of multiple months.' That's a different problem -- if the number of zombies does increase, then yes, it's more serious. If it's either 0 or 1 zombie listed at any stage, that's really not a biggie. Seriously. However, I'd be happy to accept a patch that uses a $^O check (and works, of course). Note that installing a SIGCHLD handler may cause coredumps though due to perl bugs, so that should be avoided, cf: http://bugzilla.spamassassin.org/show_bug.cgi?id=1087 (SIGCHLD can only be set to SIG_IGN or SIG_DFL on Linux or Solaris with perl 5.8.x at least. I'm not sure about BSD platforms though, but given the oddness and rarity of this race condition, I'd strongly suggest avoiding it.)
Okay, now we're seeing 2 zombies. $ ps -ajx | grep perl root 163 1 163 c72e6700 0 Is ?? 0:21.25 /usr/local/bin/spamd -a -c -d -r /var/run/spamd.pid (perl) paizuri 11318 163 163 c72e6700 0 Z ?? 0:00.00 (perl) whited 11323 163 163 c72e6700 0 Z ?? 0:00.00 (perl) jdc 11377 51092 11376 c7296480 2 R+ p2 0:00.00 grep perl Can we please see about getting this fixed?
I'll see what I can do about this in 2.70, but don't expect anything too fast (ie. within the next few weeks) as I'm quite busy now.
Absolutely no problem -- take your time. I'm willing to try patches as well, if necessary.
Could you test with current SVN trunk? I think this is fixed. (marking FIXED until further reports ;)
No sweat -- you have an applicable URL for a tarball of the latest SVN trunk?
http://www.spamassassin.org/devel/Mail-SpamAssassin-3.000000-cvs.tar.gz will be it, once it updates at 1:00 AM GMT (ish) tonight...
After many hours of moving the FreeBSD mail/p5-Mail-SpamAssassin port over to use the CVS build, things look good: Apr 29 01:43:58 pentarou spamd[29863]: spamd starting Apr 29 01:43:59 pentarou spamd[29865]: server started on port 783/tcp (running version 3.0.0-r10392) Apr 29 01:43:59 pentarou spamd[29865]: server successfully spawned child process, pid 29866 After delivery of a good 50-60 Emails: # ps -auxwww | grep spam | grep -v spam root 29865 0.0 4.1 22636 21568 ?? Is 1:43AM 0:01.36 /usr/local/bin/spamd -c -d -m 1 -s local6 -r /var/run/spamd.pid (perl) root 29866 0.0 4.5 24740 23668 ?? I 1:43AM 0:01.93 /usr/local/bin/spamd -c -d -m 1 -s local6 -r /var/run/spamd.pid (perl) I'll report back in about 48 hours, to see if there's any issues. Also, one final thing (totally unrelated): could someone add some environment hooks for enabling/disabling the DBI/SQL/Bayes tests (identical to the network tests) in Makefile.PL? Or should I submit this request in a new bug/feature request...
After 12 hours: root 29865 0.0 4.1 22636 21552 ?? Is 1:43AM 0:01.36 /usr/local/bin/spamd -c -d -m 1 -s local6 -r /var/run/spamd.pid (per root 29866 0.0 11.0 60752 57288 ?? I 1:43AM 6:36.09 /usr/local/bin/spamd -c -d -m 1 -s local6 -r /var/run/spamd.pid (per Memory leak?
Subject: Re: spamd generating zombie processes on FreeBSD bugzilla-daemon@bugzilla.spamassassin.org wrote: > Also, one final thing (totally unrelated): could someone add some environment > hooks for enabling/disabling the DBI/SQL/Bayes tests (identical to the network Seconded (for NetBSD packaging), probably for the same reasons :-) I've been lagging behind building SA 3.0 releases on NetBSD but will hopefully resume this soon. ciao Klaus