Comment 2 for bug 1580623

Revision history for this message
mdavidsaver (mdavidsaver) wrote :

I think the fact that epicsExitCallAtExitsPvt is running is actually
coincidental. The order of atexit hooks for 'caget' is

> atExit errlogExitHandler((nil))
> atExit cacExitHandler((nil))
> atExit ca_client_exit_handler((nil))
> atExit ClockTime_Shutdown((nil))

Since the errlog thread is still waiting on its event I think
errlogExitHandler() hasn't returned.

Before the changes for lp:1527636, with 'caget' the name lookup daemon
thread was stopped during ca_context_destroy() before main() returned.

The crash is coming from ipAddrToAsciiAsynchronous.cpp:273

> this->pCurrent->pCB->transactionComplete ( this->nameTmp );

My suspicion is that one of these will show corruption as something has
been incorrectly/incompletely delete'd. If not, it should tell us which
of the two sub-classes of ipAddrToAsciiCallBack is involved.

I can think of two possibilities, either there is a logic error in
~ipAddrToAsciiTransactionPrivate allowing the dtor to complete w/o
removing itself from a tsDLList, or that the dtor isn't being called at all.