<varlistentry id="opt.partial-loads-ok" xreflabel="--partial-loads-ok">
<term>
- <option><![CDATA[--partial-loads-ok=<yes|no> [default: no] ]]></option>
+ <option><![CDATA[--partial-loads-ok=<yes|no> [default: yes] ]]></option>
</term>
<listitem>
<para>Controls how Memcheck handles 32-, 64-, 128- and 256-bit
<para>Note that code that behaves in this way is in violation of
the ISO C/C++ standards, and should be considered broken. If
- at all possible, such code should be fixed. This option should be
- used only as a last resort.</para>
+ at all possible, such code should be fixed.</para>
</listitem>
</varlistentry>
/*--- Command line args ---*/
/*------------------------------------------------------------*/
-/* --partial-loads-ok: enable by default on MacOS. The MacOS system
- graphics libraries are heavily vectorised, and not enabling this by
- default causes lots of false errors. */
-#if defined(VGO_darwin)
+/* 31 Aug 2015: Vectorised code is now so widespread that
+ --partial-loads-ok needs to be enabled by default on all platforms.
+ Not doing so causes lots of false errors. */
Bool MC_(clo_partial_loads_ok) = True;
-#else
-Bool MC_(clo_partial_loads_ok) = False;
-#endif
-
Long MC_(clo_freelist_vol) = 20*1000*1000LL;
Long MC_(clo_freelist_big_blocks) = 1*1000*1000LL;
LeakCheckMode MC_(clo_leak_check) = LC_Summary;
static void mc_print_usage(void)
{
- const HChar* plo_default = "no";
-# if defined(VGO_darwin)
- plo_default = "yes";
-# endif
-
VG_(printf)(
" --leak-check=no|summary|full search for memory leaks at exit? [summary]\n"
" --leak-resolution=low|med|high differentiation of leak stack traces [high]\n"
" same as --show-leak-kinds=definite\n"
" --undef-value-errors=no|yes check for undefined value errors [yes]\n"
" --track-origins=no|yes show origins of undefined values? [no]\n"
-" --partial-loads-ok=no|yes too hard to explain here; see manual [%s]\n"
+" --partial-loads-ok=no|yes too hard to explain here; see manual [yes]\n"
" --freelist-vol=<number> volume of freed blocks queue [20000000]\n"
" --freelist-big-blocks=<number> releases first blocks with size>= [1000000]\n"
" --workaround-gcc296-bugs=no|yes self explanatory [no]\n"
" --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none\n"
" stack trace(s) to keep for malloc'd/free'd areas [alloc-and-free]\n"
" --show-mismatched-frees=no|yes show frees that don't match the allocator? [yes]\n"
-, plo_default
);
}
-Invalid read of size 4
- at 0x........: main (partial_load.c:16)
- Address 0x........ is 0 bytes inside a block of size 3 alloc'd
- at 0x........: calloc (vg_replace_malloc.c:...)
- by 0x........: main (partial_load.c:14)
-
Invalid read of size 4
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 4 alloc'd
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
-Invalid read of size 8
- at 0x........: main (partial_load.c:16)
- Address 0x........ is 0 bytes inside a block of size 7 alloc'd
- at 0x........: calloc (vg_replace_malloc.c:...)
- by 0x........: main (partial_load.c:14)
-
Invalid read of size 8
at 0x........: main (partial_load.c:23)
Address 0x........ is 1 bytes inside a block of size 8 alloc'd
For a detailed leak analysis, rerun with: --leak-check=full
For counts of detected and suppressed errors, rerun with: -v
-ERROR SUMMARY: 4 errors from 4 contexts (suppressed: 0 from 0)
+ERROR SUMMARY: 3 errors from 3 contexts (suppressed: 0 from 0)
prog: test-plo
-vgopts: -q --keep-stacktraces=alloc-then-free
+vgopts: -q --partial-loads-ok=no --keep-stacktraces=alloc-then-free