Date: Sun, 17 Nov 2002 10:16:24 -0500
To: address@hidden
From: Mike Tancsa <address@hidden>
Subject: latest spam-milter
Hi,
I have been playing around with the cvs version of your milter
(nice little program BTW!) and so far so good. However, I noticed that it
occasionally core dumps with a sig 6. I recompiled things with debugging
code and found the following.
(gdb) where
#0 0x2811f4a8 in kill () from /usr/lib/libc_r.so.4
#1 0x2816f0e1 in abort () from /usr/lib/libc_r.so.4
#2 0x280bdae7 in __default_terminate () from /usr/lib/libstdc++.so.3
#3 0x280bdaf5 in __terminate () from /usr/lib/libstdc++.so.3
#4 0x280bddf7 in __sjthrow () from /usr/lib/libstdc++.so.3
#5 0x804dbc9 in mlfi_eom (ctx=0x8089000) at spamass-milter.cpp:575
#6 0x28076d4f in mi_clr_macros () from /usr/lib/libmilter.so.2
#7 0x280761c0 in mi_engine () from /usr/lib/libmilter.so.2
#8 0x28075e25 in mi_handle_session () from /usr/lib/libmilter.so.2
#9 0x28075622 in mi_thread_handle_wrapper () from /usr/lib/libmilter.so.2
#10 0x280f9100 in _thread_start () from /usr/lib/libc_r.so.4
#11 0xbfa65ffc in ?? ()
(gdb) (gdb) up
#1 0x2816f0e1 in abort () from /usr/lib/libc_r.so.4
(gdb) up
#2 0x280bdae7 in __default_terminate () from /usr/lib/libstdc++.so.3
(gdb) up
#3 0x280bdaf5 in __terminate () from /usr/lib/libstdc++.so.3
(gdb) up
#4 0x280bddf7 in __sjthrow () from /usr/lib/libstdc++.so.3
(gdb) up
#5 0x804dbc9 in mlfi_eom (ctx=0x8089000) at spamass-milter.cpp:575
575 return SMFIS_CONTINUE;
(gdb)
sfsistat
mlfi_eom(SMFICTX* ctx)
{
SpamAssassin* assassin = static_cast<SpamAssassin*>(smfi_getpriv(ctx));
debug(1, "mlfi_eom: enter");
try {
// close output pipe to signal EOF to SpamAssassin
assassin->close_output();
// read what the Assassin is telling us
assassin->input();
// It makes no sense to modify the mail if it already rated
// Spam. Otherwise this is our chance to modify the mail
// accordingly to what the SpamAssassin told us.
//
if (assassin->spam_flag().size()==0)
assassinate(ctx, assassin);
// now cleanup the element.
smfi_setpriv(ctx, static_cast<void*>(0));
delete assassin;
} catch (string& problem)
{
throw_error(problem);
smfi_setpriv(ctx, static_cast<void*>(0));
delete assassin;
debug(1, "mlfi_eom: exit this was causing an abort");
return SMFIS_TEMPFAIL;
};
is SMFIS_TEMPFAIL supposed to make the program terminate and dump core
(sig 6) like that ?
Also, any chance to integrate patch 405 ?
---Mike