Eliminate yices_smt2_mt frontend, incorporating multi-thread test functionality into yices_smt2.
Provide a thread-safe implementation of timeouts.
Avoid allocating very large arrays on the stack. (Noticed because it caused threads, which have smaller stacks, to crash.) Variable-sized allocation on the stack is a bad idea if the allocation size is not bounded.
For testing purposes, give thread stacks the same size as the main stack. (Necessary to work around the fact that libcudd uses recursion where it should use iteration in at least one place.)
Enhance check.sh to allow passing additional options to tests and to allow running individual tests.
Clean up error-handling for POSIX threads API.
Fix incorrect order of destruction in yices_exit.
With these changes, all regression tests pass with --enable-mcsat --enable-thread-safety when running the yices_smt2 frontend with 8 threads.
coverage: 64.976% (+0.003%) from 64.973% when pulling 88e46491182753b7023c87e4de55bc821f3be9ba on markpmitchell:mcsat-thread-safety into 618cbb3b5ea3511850e308be25a23be797c0523d on SRI-CSL:master.
yices_smt2_mt
frontend, incorporating multi-thread test functionality intoyices_smt2
.yices_exit
.With these changes, all regression tests pass with
--enable-mcsat --enable-thread-safety
when running theyices_smt2
frontend with 8 threads.