And when the stdin/out/err descriptors are reassigned they are
now treated as normal (non-inherited) file descriptors.
+* Helgrind:
+ There is a change to warnings about calls to pthread_cond_signal and
+ pthread_cond_broadcast when the associated mutex is unlocked. Previously
+ Helgrind would always warn about this. Now this error is controlled by
+ a command line option, --check-cond-signal-mutex=yes|no. The default is
+ no. This change has been made because some C and C++ standard libraries
+ use pthread_cond_signal/pthread_cond_broadcast in this way. Users are
+ obliged to use suppressions if they wish to avoid this noise.
+
* ==================== FIXED BUGS ====================
The following bugs have been fixed or resolved. Note that "n-i-bz"
502288 s390x: Memcheck false positives with NNPA last tensor dimension
502324 s390x: Memcheck false positives with TMxx and TM/TMY
502679 Use LTP for testing valgrind
+502871 Make Helgrind "pthread_cond_{signal,broadcast}: dubious: associated
+ lock is not held by any thread" optional
To see details of a given bug, visit
https://bugs.kde.org/show_bug.cgi?id=XXXXXX
#else
Bool HG_(clo_ignore_thread_creation) = False;
#endif /* VGO_solaris */
+Bool HG_(clo_check_cond_signal_mutex) = False;
static
ThreadId map_threads_maybe_reverse_lookup_SLOW ( Thread* thr ); /*fwds*/
HG_(record_error_Misc)(thr,
"pthread_cond_{signal,broadcast}: associated lock is a rwlock");
}
- if (lk->heldBy == NULL) {
+ if (HG_(clo_check_cond_signal_mutex) && lk->heldBy == NULL) {
HG_(record_error_Dubious)(thr,
"pthread_cond_{signal,broadcast}: dubious: "
"associated lock is not held by any thread");
HG_(clo_check_stack_refs)) {}
else if VG_BOOL_CLO(arg, "--ignore-thread-creation",
HG_(clo_ignore_thread_creation)) {}
-
+ else if VG_BOOL_CLO(arg, "--check-cond-signal-mutex",
+ HG_(clo_check_cond_signal_mutex)) {}
else
return VG_(replacement_malloc_process_cmd_line_option)(arg);
" --history-backtrace-size=<number> record <number> callers for full\n"
" history level [8]\n"
" --delta-stacktrace=no|yes [yes on linux amd64/x86]\n"
-" no : always compute a full history stacktrace from unwind info\n"
-" yes : derive a stacktrace from the previous stacktrace\n"
+" no: always compute a full history stacktrace from unwind info\n"
+" yes: derive a stacktrace from the previous stacktrace\n"
" if there was no call/return or similar instruction\n"
" --conflict-cache-size=N size of 'full' history cache [2000000]\n"
" --check-stack-refs=no|yes race-check reads and writes on the\n"
" main stack and thread stacks? [yes]\n"
" --ignore-thread-creation=yes|no Ignore activities during thread\n"
-" creation [%s]\n",
+" creation [%s]\n"""
+" --check-cond-signal-mutex=yes|no [no]\n"
+" no: do not check that the associated mutex is locked for calls\n"
+" to pthread_cond_{signal,broadcast}\n"
+" yes: generate 'dubious' error messages if the associated mutex\n"
+" is unlocked\n",
HG_(clo_ignore_thread_creation) ? "yes" : "no"
);
}