HylaFAX The world's most advanced open source fax server

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

Re: A clue: mailer died with signal 13

Hi again Robert,

Robert Colquhoun <rjc@trump.net.au> wrote:

: Firstly C++ 101:  new is like malloc but generates new objects in memory
: rather than raw memory. delete is like free but deletes objects rather than
: raw memory.
: Its a bit more complicated than that, but anyway.....

OK, I got the idea :-)

: The delete statement could cause a sigsegv in two ways, by freeing memory
: it didnt own ie 'a' is NULL or something in the objects destructor which is
: implicitly called.

Nope, 'a' is not NULL (fprintf(stderr, "a=%p\n", a) gives something).

: Looking at the faxMailApp destructor:
: faxMailApp::~faxMailApp()
: {
:     delete client;
:     for (u_int i = 0, n = tmps.length(); i < n; i++)
:         Sys::unlink(tmps[i]);
: }      
: client is pointing to an object of type MySendFaxClient(hopefully it is
: _not_ NULL)

Well, if the -d flag is not used the client _is_ NULL. This might be a
bug. However, client _is not_ NULL when -d is specified (I used
fprintf's to be sore of this).

I've just put a fprintf at the end of the faxMailApp destructor and
execution is reaching that point.

: MySendFaxClient::~MySendFaxClient() {}
: no sigsegv there!! , unlink might also do weird stuff if passed a bad
: parameter.

Right, "delete client" in ~faxMailApp() is not causing the
segmentation fault.

Also, I took a look at the parameters passed to Sys::unlink() and they
are fine (strings for real files in /tmp).

So, now I have a better understanding of C++ but I'm still clueless on
why faxmail is crashing when calling the cleanup() function.

Now I found out that if I comment out the call to "delete a" in
cleanup(), the temporary files are left in /tmp. Obvious, isn't it?

: PS I might have missed something else obvious in the above but anyway
: theres a start!!

Probably a compiler or library problem?

: PPS Is that rockwell the chip maker you work for?

Kind of. Rockwell International has different bussinesses. Rockwell
Telecommunications is the one that makes the faxmode chipsets. I'm in
Rockwell Automation, the one that takes charge of automation and
industrial control. We make PLC's (Logic Comtrollers, motors, motor
controllers, pushbuttons, operator interface stuff, supervisory
software, motor starters, relays, etc.)




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

Project hosted by iFAX Solutions