MrC
lists-dcc@cappella.us
Fri Jun 5 20:53:00 UTC 2009
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;
}
More information about the DCC
mailing list