Distributed Memory Checking
(LOCAL:MEMORY:INITIALIZATION)
This feature is enabled by default if all processes run under Valgrind*. If that is
not the case, it is disabled. If in doubt, check the configuration summary at the
beginning of the run to see whether this feature was enabled or not. There are no
Intel® Trace Collector error reports with this type; Valgrind's error reports have
to be watched instead to find problems related to memory initialization. See the
section "Use of uninitialized values" in Valgrind's user guide for details.
If enabled, then Valgrind's tracking of memory definedness is extended to the whole
application. For applications which transmit partially initialized data between
processes, this avoids two cases:
- False positive: sending the message with the partially initialized data triggers a valgrind report for send or write system calls at the sender side
- False negative: at the recipient, valgrind incorrectly assumes that all incoming data is completely initialized and thus will not warn if the uninitialized data influences the control flow in the recipient; normally it would report that
To handle the false positive case Valgrind must have been started with the
suppression file provided with Intel® Trace Collector. The
local_memory_valgrind
example (available at
https://software.intel.com/en-us/product-code-samples) demonstrates both
cases.Turning this feature off is useful if the application is supposed to be written in
such a way that it never transmits uninitialized data. In that case Intel® Trace
Collector suppression file should not be used because it would suppress warnings at
the sender and the
LOCAL:MEMORY:ILLEGAL_ACCESS
must be disabled as it would cause
extra valgrind reports.