![]() |
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.)