Is the ipAddrToAsciiEngine::cleanup() routine necessary (this test is the only place it's called at the moment)? Could this become an epicsAtExit() routine, or would that just bring back the shutdown delays that caused these changes in the first place? Cleaning up things which only get initialized in an epicsThreadOnce() routine makes them impossible to use afterwards, so you couldn't call ipAddrToAsciiEngine::cleanup() in dbUnitTest.c; I'm not really sure where it could be used.
I'm not really expecting to be able to run the self-tests more than once without rebooting, but it is nice if they don't crash since many of the tests /can/ be run more than once.
There doesn't appear to be any documentation for this subsystem that could be updated, but the previous fix was mentioned in the 3.14.12.6 Release Notes so it would be good to have this fix covered there too.
This passes its self-test fine on VxWorks.
However a second run inside the harness (without rebooting first) caused this:
***** ipAddrToAsciiTest *****
1..5
0x475798 (tShell0): Unhandled C++ exception resulted in call to terminate
0x00548424 epicsRunLibComT ests+0x250: runTestFunc () st+0x7c : 0x00557b90 () gine::allocate( )+0x47c: __cxa_throw () :__unexpected( void (*)())+0x0 : __cxxabiv1: :__terminate( void (*)()) () :__terminate( void (*)())+0x18 : cplusTerminate ()
0x00559584 runTestFunc +0x4c : ipAddrToAsciiTest ()
0x00547500 ipAddrToAsciiTe
0x00557b90 ipAddrToAsciiEn
0x0027c578 __cxa_throw +0x70 : std::terminate() ()
0x00279e64 __cxxabiv1:
0x00279e30 __cxxabiv1:
0x00133c70 cplusTerminate+0x4c : taskSuspend ()
Is the ipAddrToAsciiEn gine::cleanup( ) routine necessary (this test is the only place it's called at the moment)? Could this become an epicsAtExit() routine, or would that just bring back the shutdown delays that caused these changes in the first place? Cleaning up things which only get initialized in an epicsThreadOnce() routine makes them impossible to use afterwards, so you couldn't call ipAddrToAsciiEn gine::cleanup( ) in dbUnitTest.c; I'm not really sure where it could be used.
I'm not really expecting to be able to run the self-tests more than once without rebooting, but it is nice if they don't crash since many of the tests /can/ be run more than once.
There doesn't appear to be any documentation for this subsystem that could be updated, but the previous fix was mentioned in the 3.14.12.6 Release Notes so it would be good to have this fix covered there too.