HylaFAX The world's most advanced open source fax server

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]

A clue: mailer died with signal 13



Hi,

I've found something interesting regarding the problem of the sendmail
mailer called "fax" dying with signal 13.

As I told you before, the signal 13 was in octal so it was actually a
signal 11 (SIGSEGV), or a segmentation fault.

So, my conclussion was that during all this time faxmail was crashing, and
not returning normally with a "exit(11)" or "return 11". For some unknown
reasons, I could not get any core dump to analyze, probably because the
mailer was being called by sendmail, who, as someone suggested, was
ulimit'ing the faxmail process.

To debug the problem I recompiled faxmail with several fprintd's to stderr
just to trace execution of the problem.

I found that the crash was being caused in this routine in faxmail.c++:

static void cleanup()
{
    faxMailApp* a = app;
    app = NULL;
    delete a;
}

This routine is called at the very end of main():

int main(int argc, char** argv)
{
#ifdef LC_CTYPE
    setlocale(LC_CTYPE, "");                    // for <ctype.h> calls
#endif

    app = new faxMailApp;

    app->run(argc, argv);
    signal(SIGHUP, fxSIGHANDLER(SIG_IGN));
    signal(SIGINT, fxSIGHANDLER(SIG_IGN));
    signal(SIGTERM, fxSIGHANDLER(SIG_IGN));
    cleanup();
    return (0);
}

This (the fact that the program crashes in cleanup() ) explains why even
though sendmail received a signal 11 from the mailer "fax", the fax got
queued in the outgoing fax queue and eventually sent (however, sendmail
tried over and over to send the message so the message was faxed several
times).

As I said before, I know very little about C++ and I don't know what
"delete a" does in cleanup(), but commenting out this line solves the
problem and faxmail does not crash anymore and everything works _like a
charm_.

Someone mentioned that the crash could be related to MIME-encoded
attachments. Well, I have just sent a message with several MIME attachments
and it worked fine.

Are there any C++ gurus out there that can explain why this "delete a"
statement is making faxmail crash so bad? Probably a bad implementation of
the C++ compiler, library or environment? What would be the best solution
to solve the problem?

I quick grep of the HylaFAX sources returned several files that include or
call a cleanup() funtion so there might be more programs with the same
problem.

My working environment is this:

Debian GNU/Linux 2.0
gcc 2.7.2.3
g++ from egcs-2.90.27 (not from gcc)
glibc2 2.0.7pre1
libg++272
libstdc++2.8

Please note that I had to apply Robert Colquhoun's patch
(http://www.trump.net.au/~rjc/hylafax/) to be able to compile HylaFAX 2.0p4
with egcs.

Someone said that this problem has been mentioned in the list before so I
guess I am not the only one that was getting the mysterious "mailer died
with signal 13" problem. I hope that a solution can be found now.

Thanks a lot to those who replied. And thanks in advance to the C++ gurus
that will (hopefully) expand this further.

E.-


--

Eloy A. Paris
Information Technology Department
Rockwell Automation de Venezuela
Telephone: +58-2-9432311 Fax: +58-2-9431645 Cel.: +58-16-234700

"Where does this path lead?" said Alice
"Depends on where you want to go."  Said the cat
("Alice in Wonderland", by Lewis Carroll.)




Project hosted by iFAX Solutions