I have a set of single threaded C++ mains that have a bulk of their code developed in Ada. This is being built in Atego (Rational) Apex Duo, and targets 32 bit RHEL 6.3 Linux. The exec is a Class system I developed that includes sockets, a state machine, and a timer class that is the heart of the exec. The class system is used to build and execute 14 separate execs on 6 different systems that communicate via sockets. They all use the same Class system and configure themselves at startup based on an INI file.
The execs frame either at 50 or 60 Hz using the linux system clock via gettimeofday
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
and a simple non-busywait algorithm to produce the desired scheduler.
The problem I am facing at the moment is that these execs fail (seemingly) randomly. The failure appears to be that they simply stop framing. I have encapsulated all of the runtime C++ procedures in "try{} catch(...){}" and nothing is caught. Likewise, the Ada routines are protected with Exception Handlers that do not get hit.
The exec will often run happily for 30 minutes to over an hour before failure. No indication of memory creep is evident (using System Monitor). I have attached the Atego Rational Graphical Debugger to the already running execs, to no avail. When one finally fails, there is nothing in the call stack and the only indication in the debugger log is that the application has "Exited with status 255".
I am afraid that a (Linux) system routine or driver somewhere in the system is calling Exit. It seems apparent that SOMETHING is calling exit!
Anyone have any idea how I can further dubug this problem?