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

Reply via email to