Commit Graph

256 Commits

Author SHA1 Message Date
Julian Seward
77e6f16706 Fix incorrect filenames for the cond_ld_st tests.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13398
2013-05-13 13:27:00 +00:00
Julian Seward
cc44df221f cond_ld_st: Split the non-arm expected outputs into 32- and 64-bit
versions, since they will be different.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13395
2013-05-13 09:13:04 +00:00
Julian Seward
25c2291974 Add test cases for instrumentation of IR-level loads and stores.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13392
2013-05-12 11:07:59 +00:00
Julian Seward
6f2565de0e Whitespace-only changes.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13391
2013-05-12 10:43:31 +00:00
Mark Wielaard
bca0cb2aa5 strchr.vgtest mc_replace_strmem.c [r]index and [__GI_]str[r]chr are the same.
Add memcheck/tests/filter_strchr to make it so for the testcase.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13370
2013-04-17 15:23:22 +00:00
Philippe Waroquiers
a819df9d0a Solve false negative for various malloc replaced functions arguments
The replacement functions are running on the simulated CPU.
The code on the simulated CPU does not necessarily use
all arguments. E.g. args can be ignored and/or only given
to a NON SIMD call.
The definedness of such 'unused' arguments will not be verified
by memcheck.
A call to 'trigger_memcheck_error_if_undefined' allows 
memcheck to detect such errors for the otherwise unused args.
Apart of allowing memcheck to detect an error, the function
trigger_memcheck_error_if_undefined has no effect and
has a minimal cost for other tools replacing malloc functions.

(suggestion of the 'no operation check' from Julian).

tested on f12/x86, debian6/amd64, f18/ppc64
Note that some Darwin specific code has been modified
in coregrind/m_replace_malloc/vg_replace_malloc.c.
(Some of) this code has not been compiled (no access to a
Darwin system). The code changed is trivial, so there is
some chance it will compile and even maybe work.

Added a new test verifying that various malloc related
functions undefined args are triggering an error in memcheck.




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13361
2013-04-04 21:10:22 +00:00
Tom Hughes
592e58c747 Don't check the flags word in msghdr for sendmsg as the
kernel will neither read nor write it.

Patch from Mark Wielaard to fix BZ#315441.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13294
2013-02-28 12:50:55 +00:00
Philippe Waroquiers
6fb1158a78 Implement --merge-recursive-frames + provide VALGRIND_MONITOR_COMMAND client req.
In a big applications, some recursive algorithms have created
hundreds of thousands of stacktraces, taking a lot of memory.

Option --merge-recursive-frames=<number> tells Valgrind to
detect and merge (collapse) recursive calls when recording stack traces.
The value is changeable using the monitor command
'v.set merge-recursive-frames'.

Also, this provides a new client request: VALGRIND_MONITOR_COMMAND
allowing to execute a gdbsrv monitor command from the client
program.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13246
2013-01-20 17:11:58 +00:00
Philippe Waroquiers
739ae0bcb6 Implement --keep-stacktraces=alloc|free|alloc-and-free|alloc-then-free|none
The option --keep-stacktraces controls which stack trace(s) to keep for
malloc'd and/or free'd blocks. This can be used to obtain more information
for 'use after free' errors or to decrease Valgrind memory and/or cpu usage
by recording less information for heap blocks.

This fixes 312913 Dangling pointers error should also report the alloc
stack trace.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13223
2013-01-12 19:53:08 +00:00
Julian Seward
87d6d6fd1c Make memcheck/tests/stpncpy be dependent on the presence/absence of
stpncpy in libc, as determined by a configure test.  n-i-bz.
(Mark Wielaard, mjw@redhat.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13180
2012-12-14 10:30:57 +00:00
Philippe Waroquiers
1618b44d28 Fix 284540 and 307465
284540 Memcheck shouldn't count suppressions matching still-reachable allocations
307465 --show-possibly-lost=no should bring down the error count / exit code

Using the options --show-leak-kinds=kind1,kind2,.. and
--errors-for-leak-kinds=kind1,kind2,.., each leak kind (definite, indirect,
possible, reachable) can now be individually reported and/or counted as
an error.
In a leak suppression entry, an optional line 'match-leak-kinds:'
controls which leak kinds are suppressed by this entry.
This is a.o. useful to avoid definite leaks being "catched"
by a suppression entry aimed at suppressing possibly lost blocks.
Default behaviour is the same as 3.8.1

Old args (--show-reachable and --show-possibly-lost) are still accepted.

Addition of a new test (memcheck/tests/lks) testing the new args
and the new suppression line.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13170
2012-12-08 17:54:16 +00:00
Julian Seward
5ed1bb6a2f Add an intercept for stpncpy. Fixes #309427.
(Mark Wielaard, mjw@redhat.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13163
2012-12-06 17:54:33 +00:00
Julian Seward
8904839e87 Add intercepts for wcscpy, wcscmp, wcsrchr and wcschr on Linux.
Fixes #307828.  (Mark Wielaard, mjw@redhat.com)


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13162
2012-12-06 17:16:00 +00:00
Philippe Waroquiers
979dc8596b Introduce a test to reproduce bug 123837 (semctl GETVAL false positive)
The test succeeds on amd64, but fails on x86, with the following diff:

+Syscall param semctl(arg) points to uninitialised byte(s)
+   at 0x........: semctl@@GLIBC_2.2 (semctl.c:109)
+   by 0x........: main (sem.c:36)
+ Address 0x........ is on thread 1's stack
+
+Syscall param semctl(arg) points to uninitialised byte(s)
+   at 0x........: semctl@@GLIBC_2.2 (semctl.c:109)
+   by 0x........: main (sem.c:43)
+ Address 0x........ is on thread 1's stack
+



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13073
2012-10-21 18:46:09 +00:00
Tom Hughes
c560f18eb7 Filter out memcpy symbol versions from test results.
Patch from Mark Wielaard to fix BZ#307290.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13020
2012-10-04 20:41:12 +00:00
Philippe Waroquiers
0a51e37219 Add a test which checks the leak search recovery mechanism
The leak search must recover if unreadable pages are scanned.
This test creates such unreadable pages by doing non SIMD mprotect
syscall (not seen by the aspacemgr).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12972
2012-09-14 21:10:15 +00:00
Julian Seward
0591d4c8f0 Don't explicitly specify an ABI when building regtests on ARM. This
causes them to fail to be built on (eg) Ubuntu 12.04 ARM.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12831
2012-08-04 19:21:18 +00:00
Philippe Waroquiers
d8576fd3bc Add non matching suppressions for suppfree test (more testing for suppr matching)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12825
2012-08-04 00:26:26 +00:00
Philippe Waroquiers
d045b4236a Implement --redzone-size and --core-redzone-size
* For tools replacing the malloc library (e.g. Memcheck, Helgrind, ...),
  the option --redzone-size=<number> allows to control the padding 
  blocks (redzones) added before and after each client allocated block.
  Smaller redzones decrease the memory needed by Valgrind. Bigger
  redzones increase the chance to detect blocks overrun or underrun.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12807
2012-07-31 22:17:28 +00:00
Petar Jovanovic
0717c59552 MIPS specific expected output for memcheck/tests/sigkill.
MIPS has different signal values, so it has to have its own expected output for
the tests that deal with signal values.
This fixes (false) failure in memcheck/tests/sigkill.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12794
2012-07-27 22:35:35 +00:00
Florian Krohm
5dec28d4af Increase allowed size of a back-trace to 500 frames.
This limit is large enough for all practical purposes. It exists
only to sanity check the value specified with --num-callers.
Be frugal in record_ExeContext_wrk and only allocate on the stack 
as many frames as needed. 
Testcase included.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12685
2012-06-29 21:20:52 +00:00
Bart Van Assche
209eb0a2ab Add strchr.stderr.exp3 to memcheck/tests/Makefile.am
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12647
2012-06-17 05:51:03 +00:00
Julian Seward
15d92f3799 Fixes for 'make dist'.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12614
2012-06-05 11:10:19 +00:00
Florian Krohm
48b4014349 Add testcases for "compare and swap".
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12595
2012-05-30 20:46:58 +00:00
Philippe Waroquiers
6ccb4c199e fix 299756 (for symmetry, --free-fill must be ignored for MEMPOOL_FREE and FREELIKE client requests).
Test program from goodell@mcs.anl.gov



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12560
2012-05-11 22:10:39 +00:00
Philippe Waroquiers
0ea6d36f1d fix 219156 support static malloc or alternate malloc lib (e.g. tcmalloc) with new option --soname-synonyms
* pub_tool_redir.h : define the prefix to be used for "soname synonym"
  place holder
* vg_replace_malloc.c : define synonym place holder for malloc related
  functions
* m_redir.c : when detecting a soname synonym place holder redir spec, search
  in clo_soname_synonyms if there is a synonym pattern.
  If yes, replace the soname pattern. If not, ignore the redir spec.
* various files: implement or document the new clo --soname-synonyms
* new test memcheck/tests/static_malloc.vgtest



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12559
2012-05-11 19:33:46 +00:00
Julian Seward
e13d919613 Add support for reading DWARF4 .debug_types sections. Fixes #284124.
(Tom Tromey, tromey@redhat.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12491
2012-04-05 07:55:47 +00:00
Philippe Waroquiers
b20b3938c6 add test-plo-no.stderr.exp-s390x-mvc in EXTRA_DIST.
Note: such missing files in EXTRA_DIST are found
by check_makefile_consistency.
However, to avoid blocking the tests, the return code
of check_makefile_consistency is ignored, but the errors
it detects are pages before the end of the make regtest output.

=> it might be a good idea to move the check_makefile_consistency
as the last step of regtest: target, and not ignore its return code.
This means:
   trials tests will not block make regtest
   such errors will be noticed.

For the moment, just fixed the missing file in EXTRA_DIST



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12455
2012-03-21 20:32:00 +00:00
Julian Seward
cd43bae6a4 Change the behaviour of --partial-loads-ok=yes to avoid false
negatives, by marking the V bits that come from out of range parts of
the access as undefined; and hence any use of them leads to an value
error.  Prior to this they were marked as defined and could be used
without error.

Behaviour of --partial-loads-ok=no (the default case) is unchanged.

Also add some testing thereof.

Fixes #294523.  Modified version of a patch and testcase by Patrick
J. LoPresti (lopresti@gmail.com).



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12430
2012-03-08 14:51:01 +00:00
Florian Krohm
83845abd22 Add testcase for bugzilla #287260. Testcase by M.Welinder
(mwelinder@gmail.com). Announce bug fix.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12359
2012-01-29 02:23:07 +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
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
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
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
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
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
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
080c67f88d Avoid excessive fragmentation in m_mallocfree facility by munmapping
unused superblocks in some circumstances.  Bug 250101 (==269884,
==275852)
(Philippe Waroquiers, philippe.waroquiers@skynet.be)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11911
2011-07-24 17:39:10 +00:00
Julian Seward
42ada29286 Add a new client request and pair of macros,
VALGRIND_{DISABLE,ENABLE}_ERROR_REPORTING, which allow a thread to
temporarily disable reporting of errors it makes.  This is useful for
making Memcheck behave sanely in the presence of some MPI
implementations.  Also mark up libmpiwrap.c accordingly.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11910
2011-07-24 16:02:33 +00:00
Julian Seward
ad7de5b336 Delete the AIX5 port. The last release this worked for is 3.4.1,
and then only on AIX 5.2 and 5.3.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11842
2011-06-28 07:25:29 +00:00
Julian Seward
5c1e65aa42 Memcheck:
* add delta leak checking functionality
* some editing of related manual sections
(Philippe Waroquiers, philippe.waroquiers@skynet.be).  Bug 214909
comment 105.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11838
2011-06-26 12:41:33 +00:00
Bart Van Assche
64a2d66bdf Silence compiler warnings triggered by certain regression tests programs and that we are not interested in.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11758
2011-05-15 17:06:33 +00:00
Bart Van Assche
9a8cdf03cb Moved two Linux-specific syscalls to the linux subdirectory.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11651
2011-03-17 10:57:49 +00:00
Julian Seward
dae0b7a571 'make dist' fixes following s390x-linux merge. (Christian Borntraeger
<borntraeger@de.ibm.com>)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11616
2011-03-10 12:36:09 +00:00
Julian Seward
6107fd666c Add a port to IBM z/Architecture (s390x) running Linux -- Valgrind
side components. (Florian Krohm <britzel@acm.org> and Christian
Borntraeger <borntraeger@de.ibm.com>).  Fixes #243404.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11604
2011-03-07 16:05:35 +00:00
Julian Seward
4e4990009a Add a new mempool test resulting from work on #254420, and update
expected output for an existing test.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11510
2011-01-23 20:47:26 +00:00
Bart Van Assche
006b3b1228 PowerPC: added expected output files for memcheck/tests/varinfo[1-6], based
on a patch supplied by Maynard Johnson. See also #247526.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11364
2010-09-18 13:34:23 +00:00
Julian Seward
e6d2a8b34e Fix a couple of make-dist bugs, caused by recently added ppc32/64
tests.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11352
2010-09-10 14:57:46 +00:00
Julian Seward
9287d802b4 Add tests for new PowerISA_2.05 instructions available on Power6 CPUs.
(Maynard Johnson, maynardj@us.ibm.com and Pete Eberlein, eberlein@us.ibm.com)



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11338
2010-09-03 23:49:33 +00:00