On 6/5/2009 11:38 AM, MrC wrote:
On 6/5/2009 11:14 AM, Vernon Schryver wrote:
Signal 6 generally comes from the abort() library function. That
ought to be associated with a system log complaint about a major problem.
Yup. The only other log message I have is generated by amavisd-new,
which just passed on the info from SpamAssassin:
May 30 16:57:33 glacier amavis[14242]: (14242-02) _WARN: dcc: dccifd ->
check skipped: failed to read header at
/usr/pkg/lib/perl5/vendor_perl/5.10.0/Mail/SpamAssassin/Plugin/DCC.pm
line 471.
May 30 16:57:33 glacier dccifd[1484]: restart after signal 6
May 30 16:57:33 glacier dccifd[21099]: 1.3.105 listening to
/var/dcc/dccifd for ASCII protocol
There should also be a core file in the DCC home directory. That core
file might be useful with gdb if dccifd has been built with
debugging information.
There was, but I had not built w/debug.
To rebuild the DCC software with debugging information, run
.../libexec/updatedcc -e DBGFLAGS=-g
Done - now awaiting core file production.
As expected, this is the result of a kill(2) call.
#0 0xbbaf923f in kill () from /usr/lib/libc.so.12
#1 0xbbb95a64 in abort () from /usr/lib/libc.so.12
#2 0xbbbdc60c in __res_state () from /usr/lib/libpthread.so.0
#3 0x0806b9ca in dcc_res_delays (budget=4) at get_port.c:476
#4 0x080660f2 in dcc_clnt_rdy (emsg=0xb91fff50 "", ctxt=0x80c9000,
clnt_fgs=8 '\b') at clnt_send.c:1740
#5 0x080544dc in clnt_resolve_thread (arg=0x0) at clnt_threaded.c:394
#6 0xbbbe562d in pthread_join () from /usr/lib/libpthread.so.0
#7 0xbbb1aa2c in swapcontext () from /usr/lib/libc.so.12
This comes from Mail/SpamAssassin/Plugin/DCC.pm :
# send the options and other parameters to the daemon
$sock->print("header " . $opts . "\n") || dbg("dcc: failed write")
&& die; # options
$sock->print($client . "\n") || dbg("dcc: failed write") && die; #
client
$sock->print($helo . "\n") || dbg("dcc: failed write") && die; #
HELO value
$sock->print("\n") || dbg("dcc: failed write") && die; # sender
$sock->print("unknown\r\n") || dbg("dcc: failed write") && die; #
recipients
$sock->print("\n") || dbg("dcc: failed write") && die; # recipients
$sock->print($$fulltext);
$sock->shutdown(1) || dbg("dcc: failed socket shutdown: $!") && die;
$sock->getline() || dbg("dcc: failed read status") && die;
$sock->getline() || dbg("dcc: failed read multistatus") && die;
>>>> so we failed to getlines() from the socket ...
my @null = $sock->getlines();
>>>> and then die... :
if (!...@null) {
# no facility prefix on this
die("failed to read header\n");
}
# the first line will be the header we want to look at
chomp($response = shift @null);
# but newer versions of DCC fold the header if it's too long...
while (my $v = shift @null) {
last unless ($v =~ s/^\s+/ /); # if this line wasn't folded, stop
chomp $v;
$response .= $v;
}
dbg("dcc: dccifd got response: $response");
});
$permsgstatus->leave_helper_run_mode();
if ($timer->timed_out()) {
dbg("dcc: dccifd check timed out after $timeout secs.");
return 0;
}
>>>> but the die is caught, and this message output:
if ($err) {
chomp $err;
warn("dcc: dccifd -> check skipped: $! $err");
return 0;
}
_______________________________________________
DCC mailing list [email protected]
http://www.rhyolite.com/mailman/listinfo/dcc