Commit Graph

1390 Commits

Author SHA1 Message Date
Philippe Waroquiers
48046f6940 Added a new parameter to the memcheck 'leak_check' GDB monitor command
to let the user specify a max nr of loss records to output : on huge
applications, interactive display of a lot of records in gdb can
take a lot of time.


* mc_include.h : 
  - added UInt max_loss_records_output; to LeakCheckParams structure
  - avoid passing LeakCheckParams by struct copy.
* modified test gdbserver_tests/mcleak to test the new parameter
* mc_main.c : parse or set max_loss_records_output in leak_check cmd
  handling and calls.
* mc-manual.xml : document new leak_check parameter
* mc_leakcheck.c : 
  - extract printing rules logic in its own function
  - in print_results, if there is a limit in LeakCheckParam,
    compute from where the printing of loss records has to start

 



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12329
2012-01-14 13:53:13 +00:00
Florian Krohm
83e28c9beb Fix accounting for MC_(realloc). It was inconsistent as compared to
other wrappers in that it took place before the silly-args check. 
Testcase and patch by Yann Droneaud (yann@droneaud.fr).
Fixes #281482

Also included is a related fix to MC_(new_block). Incrementing the
alloc counter and updating the allocated memory amount should
occur under the same condition (allocation succeeded).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12324
2011-12-30 03:09:45 +00:00
Philippe Waroquiers
225138a663 Avoid buffer overrun in percentify call.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12322
2011-12-27 18:43:32 +00:00
Philippe Waroquiers
c953f410c8 Fix 247386 make perf does not run all performance tests :
* move memcheck/perf/many-loss-records test to perf directory
       massif/perf/many-xpts test to perf directory
* modified many-loss-records.vgperf and many-xpts.vgperf,
  so as to have tool specific options prefixed with their tool
* remove directory memcheck/perf and massif/perf (containing no test anymore)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12315
2011-12-23 11:42:20 +00:00
Bart Van Assche
2796d1b9be RHEL 4 build fix
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12263
2011-11-09 17:31:54 +00:00
Julian Seward
d2daafda62 Use normal setjmp/longjmp, not the __builtin_ ones, as LLVM pretty
much treats the latter kind as no-ops.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12254
2011-10-31 10:59:31 +00:00
Florian Krohm
b0ee68529f Give function copy_input_until_stop the noinline atribute.
At least one of the compilers for s390x nightly builds was inlining it.
Update exp files accoordingly. This should fix any residual back-trace 
noise for this testcase.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12235
2011-10-26 15:27:41 +00:00
Julian Seward
68cf6ae28d Some fixes for Android:
* initial support for Pandaboard/Linaro
* on Android/ARM, ask for non-executable stacks in the executables
* disable Memcheck's strcasestr intercept; its use of tolower()
  causes the dynamic linker to fail.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12234
2011-10-26 15:10:49 +00:00
Julian Seward
084b7cb10b Fix #284384 (clang 3.1 -Wunused-value warnings in valgrind.h,
memcheck.h) by changing a bunch of VALGRIND_DO_CLIENT_REQUEST_EXPR
into VALGRIND_DO_CLIENT_REQUEST_STMT for cases where the return value
of the former would be unused.  (Bart Van Assche, bart.vanassche@gmail.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12226
2011-10-24 13:21:57 +00:00
Julian Seward
daa6c4607b Change the behaviour of VALGRIND_CHECK_MEM_IS_DEFINED slightly, so
that if the range is partially non-addressable and it contains
undefined data, both errors are reported.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12222
2011-10-24 05:59:54 +00:00
Julian Seward
c96096ab24 Update all copyright dates, from 20xy-2010 to 20xy-2011.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12206
2011-10-23 07:32:08 +00:00
Julian Seward
ae9c958f70 Improvements in freelist handling for Memcheck. See #250065.
(Philippe Waroquiers, philippe.waroquiers@skynet.be)

This patch provides three improvements in the way the free list is 
handled in memcheck.

First improvement: a new command line option --freelist-big-blocks
(default 1000000) specifies the size of "free list big blocks". 
Such big blocks will be put on the free list, but will be re-cycled first
(i.e. in preference to block having a smaller size).
This fixes the bug https://bugs.kde.org/show_bug.cgi?id=250065.
Technically, the freed list is divided in two lists : small
and big blocks. Blocks are first released from the big block list.

Second improvement: the blocks of the freed list are re-cycled before
a new block is malloc-ed, not after a block is freed.
This gives better error messages for dangling pointer errors
when doing many frees without doing malloc between the frees.
(this does not uses more memory).

Third improvement: a block bigger than the free list volume will be
put in the free list (till a malloc is done, so as the needed memory
is not bigger than before) but will be put at the beginning of the
free list, rather than at the end. So, allocating then freeing such a
block does not cause any blocks in the free list to be released.

Results of the improvements above, with the new regression test
memcheck/test/big_blocks_freed_list: with the patch, 7 errors
are detected, 6 are giving the (correct) allocation stack.
Without the patch, only 6 errors are detected, 5 errors without
allocation stack, 1 with a (wrong) allocation stack.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12202
2011-10-22 19:48:57 +00:00
Julian Seward
b9b6742e1f Add an excessively minimal testcase, from #279698, pertaining to the
propagation of V bits through saturated narrowing operations.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12194
2011-10-22 09:55:37 +00:00
Julian Seward
ef4bea6bb5 Change and simplify the way that Memcheck instruments saturating
narrowing operations.  The previous scheme was simply wrong and could
cause false negatives, by causing some narrowing operations to have a
defined output even when the inputs are undefined.  This was what
#279698 reported.  This patch is a fix for that bug.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12190
2011-10-22 09:29:41 +00:00
Julian Seward
1fd197db11 Add a replacement for strcasestr, along with test case. Fixes #282979.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12187
2011-10-21 08:07:13 +00:00
Florian Krohm
086294dbed Add missing filter scripts to Makefile.am so they are included in
the tarball generated by "make dist".
With this change running regtest from the tarball produces the same
results as a regtest on a checked out repository (on x86 that is).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12172
2011-10-20 01:17:12 +00:00
Julian Seward
6af4478c60 Handle new Iop_CmpEQ64x2 introduced in vex r2218.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12165
2011-10-19 15:24:55 +00:00
Bart Van Assche
399aea2c1b memcheck/tests/linux/Makefile.am: Add four .vgtest files to the distribution tarball and remove the capget binary
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12155
2011-10-14 09:32:46 +00:00
Bart Van Assche
64f66e209a Revert r12128 because it triggers an assertion failure on one of the nightly build systems
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12133
2011-10-11 10:56:11 +00:00
Florian Krohm
5f2312e2a9 First round of changes to get make dist working again.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12131
2011-10-09 23:28:47 +00:00
Bart Van Assche
972d2598ed memcheck/tests/err_disable4: Increase thread stack size a little
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12128
2011-10-09 08:05:08 +00:00
Bart Van Assche
31a228d817 memcheck/tests/unit_libcbase.c: Convert from old-style gcc designated
initializers to C99-style designated initializers. According to the gcc manual,
the former syntax is obsolete since gcc 2.5
(see also http://gcc.gnu.org/onlinedocs/gcc-4.6.1/gcc/Designated-Inits.html).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12113
2011-10-07 09:45:14 +00:00
Bart Van Assche
64639894d6 memcheck/tests/err_disable4: Reduce memory footprint further.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12112
2011-10-07 09:41:58 +00:00
Bart Van Assche
7dab1bd66a Avoid that using any of the VALGRIND_DISABLE_ERROR_REPORTING,
VALGRIND_ENABLE_ERROR_REPORTING, VALGRIND_DO_ADDED_LEAK_CHECK,
VALGRIND_DO_CHANGED_LEAK_CHECK macros causes gcc 4.6 to print
a warning message about assigning a value to an unused variable.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12110
2011-10-07 09:39:56 +00:00
Bart Van Assche
71a513f01a Format functions: change format specifier %t into %pS. Remove the _no_f_c formatting function variants.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12108
2011-10-06 19:08:37 +00:00
Florian Krohm
dc608b4b58 Declare _exit as "noreturn". This will avoid a GCC warning.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12104
2011-10-05 14:36:00 +00:00
Florian Krohm
ddd11cf638 Change the filter order. Filename base backtrace filtering
must come first before the filename gets changed to bogus.S
This should unbreak the failure on x86_64. But I can't test it.
We shall see.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12099
2011-10-05 03:09:01 +00:00
Florian Krohm
7a5d4dd13a Update exp files for memcheck's supp_unknown testcase.
Promote the s390x exp file to be the golden one because it has the
correct result. Add an exp-kfail file for those platforms where the testcase
fails (x86).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12098
2011-10-05 02:34:33 +00:00
Florian Krohm
8d6e98bdfd Rewrite badjump and badjump2 such that the error occurs now on the
same line for all architectures.
Promote the s390x exp file to be the golden one because it has the
correct result. Add exp-kfail files for those platforms where the testcases
fail (x86).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12097
2011-10-04 20:14:59 +00:00
Florian Krohm
15d93bd860 Fix execve2 testcase.
First, due to a typo in Makefile.am it was compiled with the wrong flags.
Secondly, the testcase gives an incorrect backtrace on x86 (missing the
line where the error occurs). Updated the generic exp to contain the
correct result and added exp-kfail for platforms where this test fails.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12094
2011-10-04 03:55:04 +00:00
Florian Krohm
d2b0c7d982 Turns out there is at least one version of glibc tat contains
a file name writev.c. This screws our filename based backtrace
filtering. Rename writev to writev1 to avoid that problem.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12093
2011-10-04 03:33:59 +00:00
Florian Krohm
c8d25c1a22 The testcases execve1 and fwrite actually fail on x86 in the sense that
they produce an incomplete backtrace. Added exp-kfail files to capture the
results with the incomplete backtraces. Updated the generic exp files.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12092
2011-10-04 03:15:38 +00:00
Florian Krohm
ad7a355b4a Improve filtering of backtrace noise in the memcheck bucket
and update exp files accordingly. This works well for x86
and all testcases pass on my machine.
New file filter_memcheck to do the work. 
There is a bit of a ripple here as filter_memcheck requires
command line arguments to be passed in. So all users of 
filter_memcheck (direct or indirect) were updated as well.
filter_stderr was simplified as was filter_libc.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12091
2011-10-03 23:39:54 +00:00
Florian Krohm
d13b1b34c8 Rename testcase from execve to execve1.
The reason is that the point of failure is in glibc
in a file named execve.c  The backtrace filtering
(which is filename based) cannot distinguish the
two execve.c file names. Renaming the testcsae does the
trick.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12090
2011-10-03 23:05:56 +00:00
Julian Seward
ef47922e1a Limit number of backtrace frames to 3 so as to avoid junk frames.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12087
2011-10-03 16:15:16 +00:00
Julian Seward
65f6c85aa8 Fix multiple problems with this test:
* when creating threads, just ask for a 256k stack size, since creating
  498 threads each with the default 8M stack size fails on 32 bit machines.

* limit number of callers to 3 so as to remove junk frames that cause
  different output on 32 vs 64 bit targets.

* add a proper self-check at the end, to verify the number of detected errors
  is as expected

* update output accordingly



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12086
2011-10-03 16:10:45 +00:00
Florian Krohm
ead612df79 Update for x86.
r8744 gave mainSort the "noinline" attribute, thereby changing
the backtrace. Nox fixed.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12080
2011-10-02 03:06:39 +00:00
Florian Krohm
ac33c6041e Use <sys/mman.h> instead of <linux/mman.h> to fix a compile problem
on SLES 10.  Patch by Rich Coe (rcoe@wi.rr.com). Fixes bugzilla #282238.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12072
2011-09-30 01:27:26 +00:00
Julian Seward
ef5296e445 arm_linux_android: intercept __dl_strcmp and __dl_strlen in
/system/bin/linker, for the usual reason.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12054
2011-09-26 20:20:19 +00:00
Julian Seward
8885c4e740 Add initial support for Mac OS X 10.7 (Lion). Tracked by bug #275168.
* configure.in support

* new supp file darwin11.supp

* comment out many intercepts in mc_replace_strmem.c and
  vg_replace_malloc.c that are apparently unnecessary for Darwin

* add minimal handling for the following new syscalls and mach traps:
    mach_port_set_context
    task_get_exception_ports
    getaudit_addr
    psynch_mutexwait
    psynch_mutexdrop
    psynch_cvbroad
    psynch_cvsignal
    psynch_cvwait
    psynch_rw_rdlock
    psynch_rw_wrlock
    psynch_rw_unlock
    psynch_cvclrprepost

* wqthread_hijack on amd64-darwin: deal with
  tst->os_state.pthread having an apparently different offset,
  which caused an assertion failure

* m_debuginfo: for 32 bit processes on Lion, use the DebugInfoFSM
  cleanup added in r12041/12042 to handle apparently new dyld
  behaviour, which is to map text areas r-- first and only
  vm_protect them later to r-x.



The following cleanups remain to be done

* remove apparently pointless, commented out wrapper macro
  invokations in mc_replace_strmem.c, eg

  //MEMMOVE(VG_Z_DYLD,        memmove)

  (or determine that they are still necessary, and uncomment)


* ditto in vg_replace_malloc.c, plus general VGO_darwin cleanups
  there


* write proper syscall wrappers for
    mach_port_set_context
    task_get_exception_ports
    getaudit_addr
    psynch_mutexwait
    psynch_mutexdrop
    psynch_cvbroad
    psynch_cvsignal
    psynch_cvwait
    psynch_rw_rdlock
    psynch_rw_wrlock
    psynch_rw_unlock
    psynch_cvclrprepost
  These are currently just no-ops and may be causing Memcheck to
  report false undef-value errors


* figure out why it doesn't work properly unless built with gcc-4.2 on
  Lion.

  gcc-4.2 is the "normal" gcc (i686-apple-darwin11-gcc-4.2.1).  Plain
  gcc is the hybrid gcc-front-end clang-back-end thing
  (i686-apple-darwin11-llvm-gcc-4.2).  Whereas on Snow Leopard, plain
  gcc is the normal gcc.

  The symptoms of the failure are that wqthread_hijack in
  syswrap-amd64-linux.c hits this /*NOTREACHED*/ vg_assert(0); right
  at the end (you need a pretty complex threaded app to trigger this),
  which makes me think that either ML_(wqthread_continue_NORETURN) or
  call_on_new_stack_0_1 do return, which they are not expected to.


* figure out if some of the uninitialised value errors reported in
  system libraries on are caused by Memcheck being confused by LLVM
  generated code, as per bug #242137



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12043
2011-09-21 08:43:08 +00:00
Florian Krohm
d0813fd49f Add more .exp files for s390 due to GCC's use of the MVC insn.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12030
2011-09-10 21:46:08 +00:00
Florian Krohm
75ae8f601e Back out r12026; instead add a new .exp file for s390x.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12029
2011-09-10 20:54:17 +00:00
Florian Krohm
0edfee0a4d For s390x we also need to accept a reported size of 1.
This is due to older versions of GCC who use the MVC insn for
assignments and that creates a sequence of 1-byte memory accesses.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12026
2011-09-10 17:56:21 +00:00
Julian Seward
c0bb2b82c6 Avoid excessive fragmentation in m_mallocfree by munmapping unused
superblocks in some circumstances (second attempt).  Bug 250101
comment 15.  (Philippe Waroquiers, philippe.waroquiers@skynet.be).


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12022
2011-09-10 10:17:35 +00:00
Florian Krohm
05545a035c Additional .exp file for s390x.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12020
2011-09-10 03:28:11 +00:00
Julian Seward
0e8736e529 * whitespace changes
* move MEMCPY(NONE, ZuintelZufastZumemcpy) to the correct ifdef;
  it got put in the wrong place by r12009 a couple of hours ago.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12010
2011-09-05 22:18:13 +00:00
Julian Seward
4bc0e6e01e For intercepts in libc and the dynamic linker (ld.so or dyld), split
the Linux and Darwin definitions so they are in completely separate
ifdefs -- iow, remove any definitions that are common to both.  This
gives some duplication, but the upside is that it is now possible to
edit the Darwin intercepts without fear of breaking the Linux ones.
This will be important when it comes to supporting OSX 10.7.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12009
2011-09-05 20:39:57 +00:00
Julian Seward
4d412a3f6a Add support for new primops added in vex r2199.
See Bug 279994 comment 1.
(Maynard Johnson, maynardj@us.ibm.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12006
2011-09-05 12:12:34 +00:00
Julian Seward
978b0c5bf2 Make sure this gets built with -fomit-frame-pointer, even on x86-linux,
where it otherwise wouldn be.  On x86-linux running Memcheck, gives a
6% instruction count reduction and a 10% reduction in memory traffic.
(Duh!)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11998
2011-08-20 15:55:07 +00:00
Bart Van Assche
11ce1f16fa memcheck/tests/linux/timerfd-syscall: Avoid failure on heavily loaded systems
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11997
2011-08-20 11:08:48 +00:00