HP aC++/HP C A.06.20 Programmer's Guide
• The thread attempts to acquire a nonrecursive mutex that it currently holds.
• The thread attempts to unlock a mutex or a read-write lock that it has not acquired.
• The thread waits (blocked) on a mutex or read-write lock that is held by a thread
with a different scheduling policy.
• Different threads non-concurrently wait on the same condition variable, but with
different associated mutexes.
• The threads terminate execution without unlocking the associated mutexes or
read-write locks.
• The thread waits on a condition variable for which the associated mutex is not
locked.
• The thread terminates execution, and the resources associated with the terminated
thread continue to exist in the application because the thread has not been joined
or detached.
• The thread uses more than the specified percentage of the stack allocated to the
thread.
The +check=thread option should only be used with multithreaded programs. It is
not enabled by +check=all.
Users can change the behavior of the +check=thread option by providing their own
rtcconfig file. The user specified rtcconfig file can be in the current directory
or in a directory specified by the GDBRTC_CONFIG environment variable. The default
configuration used by the +check=thread option is:
thread-check=1;recursive-relock=1;unlock-not-own=1;
mix-sched-policy=1;cv-multiple-mxs=1;cv-wait-no-mx=1;
thread-exit-own-mutex=1;thread-exit-no-join-detach=1;stack-util=80;
num-waiters=0;frame_count=4;output_dir=.;
If any thread error condition is detected during the application run, the error log is
output to a file in the current working directory. The output file will have the following
naming convention:
<executable_name>.<pid>.threads
where <pid> is the process id.
+check=truncate[:explicit|:implicit]
The +check=truncate[:explicit|:implicit] option enables runtime checks
to detect data loss in assignment when integral values are truncated. Data loss occurs
if the truncated bits are not all the same as the left most non-truncated bit for signed
type, or not all zero for unsigned type.
Programs might contain intentional truncation at runtime, such as when obtaining a
hash value from a pointer or integer. To avoid runtime failures on these truncations,
you can explicitly mask off the value:
ch = (int_val & 0xff);
Runtime Checking Options 107