2 problems found. Syncing scheduled threads was not happening at all because the job
was not being rescheduled. Did not want to deal with changing job call times so I
called the new scheuduled_thread_sync routine from advance_sim_time. That's where
it started, it'll be fine.
Also found that I was resetting job complete flags too aggressively. The check to
test if the thread is ready to run was missing. Added that check back in.
Created a new executive job that waits for threads to finish and readies them
for their next frame of execution. Created a new job class system_thread_sync
after the top of frame jobs and before the input processor is run to sync the
threads. Along the way cleaned up instrumentation jobs on the threads to fix#290.
The character string used in the frame log needs to be stored as
a character string. We were using a sprintf with a fixed size buffer.
The easiest change was to use asprintf which allocates a character
string big enough to hold the contents of the print. We need to
save this char string as a char string so it works out.
Verified all documentation deleted with this issue resides on
our wiki. Nothing is lost. Modified the doxygen makefile and
main page to point to the wiki where the user's guide used to be.
TODO: Need to move the requirements and design doxygen files.
The return code from parsing the monte carlo input was always set to zero and not checked.
Retured the return code from parsing the input. Added an exit if the input was not parsed
correctly.
Removed the redefinition. Included climits and changed HOST_NAME_MAX to _POSIX_HOST_NAME_MAX
which should be defined on the systems we support.
refs #265
Side effect of GSL included by default is that the monte carlo
test code needs to know that. The test code did not include the HAVE_GSL
flag correctly, causing the tests to fail. Fixed it.
refs #260
Fixed the configure script to allow the user to specify using a python3
interpreter. Had to change the the way to load the swig generated python modules.
Also had to change code dealing with python strings, oct, long, and
boolean operations.
refs #258
Unit tests failed sometimes. Found that an attributes structure for time
in the data recording class was unintialized. This led to the mods
field to have random data, and sometimes triggering sys.exec.out.time
to be assigned no units. Fixed it by zeroing out the structure.
refs #254
Used the mods field in the attributes to indicate of "--" was specified in the header file. We
still save the units as "1" to keep it compatible with udunits. When outputting the variable
in data recording or variable server we check to see if the mods field for "--" is set. We
output "--" if the mods field is set. Also allowed "--" to persist in data products.
refs #254
Changed Trick::Executive::get_current_version to return a const reference
to the string that holds the version. This avoids a copy of the string object
and avoids that object going out of scope. As a string, the debug_command
had the same problem so I fixed that one as well.
refs #252
Copied the units_conv.c from 15 that includes the new units to master.
Swept through the code removing includes to Unit.hh and UCF.h where they
are no longer needed. Remade makefile dependencies.
refs #231
Initial checkin of using udunits for measurement units conversions. Replaced
our conversion code in ICG and swig code to use udunits.
Also added code to convert unit symbols that we used in Trick that are different
names in udunits.
Added a sim_object that will eventually allow users to specify a custom
set of files to read units information.
refs #231
Overrode the write_data routine for HDF5 recording. The new routine writes
out all buffered values of an individual variable with one or two HDF5 calls.
This is much more efficient than before where we were making an HDF5 call
for a single value.
refs #188
Added a test to set the debugger command to gdb or lldb depending
on availability. Created a new script for lldb to run. Modified
the script for gdb to backtrace all threads.
refs #227
Added mutexes in the variable server listener thread and each variable server thread.
During checkpoint restart all of these mutexes are locked by the master thread to
stop accepting new connections and stop all read/writing to all variable server clients.
Communication is resumed after the checkpoint has been reloaded.
refs #168
Removed the catches for std:exceptions and unknown exceptions. The best way
I found to provide a clue to where the exception comes from is to allow the
handler for unhandled exceptions execute. This is std::terminate which calls
abort and trips a SIGABRT. I added a signal handler for SIGABRT which like
SIGSEGV, we can print a stack trace or attach a debugger to the process before
exiting. The stack trace print is on by default. By default the signal
handler is on, stack trace is on, debugger is off.
refs #220
Modified ICG to save the non-canonical name for STLs. This is typically more readable
because it is shorter. Added code to the variable server to filter out requests accessing
STLs, because those accesses will not currently work.
refs #206
When we parse header files and find std::basic_string we change that to std::string.
Added a check for std::__cxx11::basic_string to do the same. We also carry a
list of STL names, added std::__cxx11::[template_name] to the list of possilbe STL
names we are searching for.
refs #214