Commit Graph

825 Commits

Author SHA1 Message Date
Philippe Waroquiers
e122b8d637 Fix a small typo in drd EXTRADIST Makefile.am file list for mips32
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13887
2014-03-29 00:37:51 +00:00
Dejan Jevtic
6107689cd8 mips32: When we are accessing elements via double pointer MIPS compiler can
generate two consecutive 32bit loads instead of one 64bit load. Because of that
in error log we have two conflict loads of size 4 instead of one conflict load
of size 8.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13883
2014-03-20 10:23:43 +00:00
Bart Van Assche
0c4bf8499e drd: Add post-rwlock_init and pre-rwlock_destroy client requests (#332265)
From: Ivo Raisr <ivosh@ivosh.net>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13882
2014-03-19 18:48:01 +00:00
Bart Van Assche
45ab272d19 drd: Fix pthread_rwlock_timed{rd,wr}lock intercepts (#332263)
From: Ivo Raisr <ivosh@ivosh.net>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13877
2014-03-18 17:53:56 +00:00
Bart Van Assche
4ce8144dee drd/tests/atomic_var: Avoid that platform-specific code can trigger a false negative
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13876
2014-03-18 08:45:51 +00:00
Bart Van Assche
fc9651423d drd: Fix an assertion failure in the internal consistency check code (#332055)
When DRD is built with ENABLE_DRD_CONSISTENCY_CHECKS enabled it fails with an assert on platforms where VG_STACK_REDZONE_SZB is #define'd as 0 (for example on 32-bit x86). drd: drd_thread.h:299 (vgDrd_thread_set_stack_min): Assertion 'DRD_(g_threadinfo)[tid].stack_min < DRD_(g_threadinfo)[tid].stack_max || DRD_(g_threadinfo)[tid].stack_max == 0' failed. ==12392== at 0x380227CD: report_and_quit (m_libcassert.c:279) ==12392== by 0x38022979: vgPlain_assert_fail (m_libcassert.c:359) ==12392== by 0x38015B29: drd_post_thread_create (drd_thread.h:297) ==12392== by 0x380A5DDC: run_a_thread_NORETURN (syswrap-linux.c) This is because on drd_post_thread_create() call is made to: drd_start_using_mem_stack2(drd_created, stack_max, 0); and in drd_start_using_mem_stack2() calls is made to: DRD_(thread_set_stack_min)(tid, a - VG_STACK_REDZONE_SZB); For many platforms VG_STACK_REDZONE_SZB is #define'd as 0 so that stack_min == stack_max in DRD_(thread_set_stack_min)(). I think it is safe to change the assert from (stack_min < stack_max) to (stack_min <= stack_max).

From: Ivo Raisr <ivosh@ivosh.net>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13870
2014-03-12 14:27:49 +00:00
Bart Van Assche
1485694c3f coregrind/m_scheduler + drd: Rework r13862
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13864
2014-03-10 19:40:45 +00:00
Bart Van Assche
19064bf4a0 drd: Build fix for ENABLE_DRD_CONSISTENCY_CHECKS
From: Ivo Raisr <ivosh@ivosh.net>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13863
2014-03-10 18:58:19 +00:00
Bart Van Assche
43aef21f1a drd/tests/thread_namedrd/tests/thread_name: Ensure mutex address uniqueness (see also #331847)
From: Ivo Raisr <ivosh@ivosh.net>


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13854
2014-03-07 14:38:14 +00:00
Bart Van Assche
a18953034d drd/tests/sem_open: Change the semaphore name (#331839)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13853
2014-03-07 07:45:43 +00:00
Bart Van Assche
74e8b94ed7 drd: Make the code added in r13792 portable
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13794
2014-02-09 09:10:14 +00:00
Bart Van Assche
41cc572c7f drd/tests/trylock: Make this test pass for glibc >= 2.18
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13793
2014-02-08 11:19:12 +00:00
Bart Van Assche
ea8a9313c2 drd: Avoid that the drd/tests/pth_mutex_reinit test fails with glibc >= 2.18
Apparently with glibc >= 2.18 the value returned by pthread_mutexattr_gettype()
is not the same as the value passed to pthread_mutexattr_settype(). Add a
workaround for this glibc bug.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13792
2014-02-08 10:55:08 +00:00
Julian Seward
a4af4ac048 arm64: rename guest_SP to guest_XSP so as to avoid a name clash with
guest_SP from s390 world. 


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13776
2014-01-15 10:25:55 +00:00
Julian Seward
3f6d211236 Add support for ARMv8 AArch64 (the 64 bit ARM instruction set).
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13770
2014-01-12 12:54:00 +00:00
Philippe Waroquiers
af36bdd9af Fix drd assert failure for monitor cmd execution when all threads blocked in syscall
When all threads are blocked in a syscall, DRD_(thread_get_running_tid)()
returns (or can return?) a "valid" DrdThreadId (probably the last one
that was running ?).
However, in such a situation, VG_(get_running_tid)() returns 0 (as effectively
there is no thread running).

This discrepancy (drd_tid "valid" and "vg_tid" invalid) can (probably) only
happen with gdb monitor commands, as a thread can (normally) execute a
client request only when it is running.

However, vgdb can "force" the invocation of the gdb monitor client request,
even if no thread is running.
In such a case, the assert should not verify that drd_tid and vg_tid are
consistent.

To reproduce the problem:
  ./vg-in-place --tool=drd sleep 60
and in another window:
  ./coregrind/vgdb help
which then gives
  ...
  drd: drd_clientreq.c:84 (handle_client_request): Assertion 'DRD_(VgThreadIdToDrdThreadId)(vg_tid) == drd_tid' failed.
  ==4208==    at 0x3801DE1D: report_and_quit (m_libcassert.c:260)
  ==4208==    by 0x3801E034: vgPlain_assert_fail (m_libcassert.c:340)
  ==4208==    by 0x380026CC: handle_client_request (drd_clientreq.c:84)
  ==4208==    by 0x3806EE8F: handle_gdb_monitor_command (server.c:490)
  ==4208==    by 0x3806F07A: handle_query (server.c:580)
  ==4208==    by 0x3806FDB2: server_main (server.c:915)
  ==4208==    by 0x3806B01C: call_gdbserver (m_gdbserver.c:706)
  ==4208==    by 0x3806B8F2: vgPlain_invoke_gdbserver (m_gdbserver.c:892)
  ...




git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13765
2013-12-21 16:57:26 +00:00
Philippe Waroquiers
7d40b140ac Following svn r13758 (bug 328711), some further similar fixes,
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13759
2013-12-12 23:19:13 +00:00
Bart Van Assche
0eeaab895d drd/tests/std_atomic: Add
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13756
2013-12-10 17:56:20 +00:00
Bart Van Assche
87ebe0d5a4 drd: Follow-up for r13749
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13752
2013-12-07 09:16:02 +00:00
Bart Van Assche
39c447e4a9 Merge mc_replace_strmem.c, hg_intercepts.c and drd_strmem_intercepts.c
Move memcheck/mc_replace_strmem.c to shared/vg_replace_strmem.c and
add several intercepts for SSE-variants. Include that source file from
drd/drd_strmem_intercepts.c, helgrind/hg_intercepts.c and
memcheck/mc_replace_strmem.c.

Merge memcheck/tests/filter_memcpy into tests/filter_stderr_basic.
    
Update tests/check_headers_and_includes.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13719
2013-11-24 17:48:13 +00:00
Bart Van Assche
e8ec2e8d5e drd: Add three additional strncpy() and strncmp() intercepts (#326816)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13706
2013-10-29 20:49:16 +00:00
Bart Van Assche
29032f4b6e drd: Add strncpy() and strncmp() intercepts (#326816)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13705
2013-10-29 17:16:47 +00:00
Bart Van Assche
906cc893d5 drd: Add strstr() intercept (#326623)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13699
2013-10-25 16:51:21 +00:00
Bart Van Assche
12a1867bda drd: Add range support for --ptrace-addr
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13698
2013-10-25 14:26:14 +00:00
Bart Van Assche
d8d62e85f5 drd: Add a test for the strmem intercepts
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13697
2013-10-25 12:30:46 +00:00
Bart Van Assche
635f963b8c drd: Add strrchr(), memchr(), memrchr() and memcmp() intercepts (#326623)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13696
2013-10-25 12:08:36 +00:00
Bart Van Assche
1b09dba092 drd: Add stpcpy() intercept (#326436)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13694
2013-10-24 10:01:45 +00:00
Bart Van Assche
af6922c039 drd: Add additional strchr(), strcpy() and strcmp() intercepts (#326436)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13686
2013-10-23 13:09:10 +00:00
Bart Van Assche
86ed37d6f5 drd/tests: Add std_list and std_string test programs
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13680
2013-10-23 12:37:44 +00:00
Bart Van Assche
9d13fe8a66 drd: Add strchr(), strcpy(), strcmp() and memcpy() intercepts (#326436)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13679
2013-10-23 12:19:30 +00:00
Bart Van Assche
f82cf02f0a drd: Avoid that optimized strlen() implementations trigger false positive race reports (#326091)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13664
2013-10-20 08:23:38 +00:00
Julian Seward
dbf9b63605 Update copyright dates (20XY-2012 ==> 20XY-2013)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13658
2013-10-18 14:27:36 +00:00
Philippe Waroquiers
619be966db Allow tools to provide some statistics in suppression list produced at the end
Option -v outputs a list of used suppressions. This only gives
the nr of times a suppression was used.
For a leak search, this only gives the nr of loss records that
have been suppressed, but it does not give additional needed details
to understand more precisely what has been suppressed
(i.e. nr of blocks and nr of bytes).

=> Add in the tool interface update_extra_suppression_use and
print_extra_suppression_info functions to allow the tool to record
additioonal use statistics for a suppression. These statistics
can be done depending on the error (and its data) which is suppressed.

Use this in memcheck for the leak suppressions, to maintain and output
the nr of blocks and bytes suppressed by a suppression during
the last leak search.



git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13651
2013-10-17 22:10:41 +00:00
Florian Krohm
90cba9e6d4 Add a specific configury check to test compilability of the
<thread> C++ header file by the selected compiler.
Suggested by Bart Van Assche.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13628
2013-10-08 13:04:00 +00:00
Florian Krohm
799f480786 Disable drd/tests/std_thread.cpp for clang.
clang 3.3 produces an error message for /usr/include/c++/4.6/chrono
which happens to get included somewhere inside <thread>.
This happens with C++ headers from:
gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3. 


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13620
2013-10-04 21:13:16 +00:00
Bart Van Assche
0dabd6dfd3 drd: Update copyright notice
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13613
2013-10-04 05:55:30 +00:00
Bart Van Assche
625c6aa3df drd/tests/annotate_smart_pointer: Avoid non-POD variable length arrays
Non-POD variable length arrays are supported by g++ but not by clang.
Hence convert the variable length array in this test program into a vector.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13606
2013-10-02 16:22:23 +00:00
Bart Van Assche
91136a3fbd drd: Change VALGRIND_DO_CLIENT_REQUEST_EXPR() into VALGRIND_DO_CLIENT_REQUEST_STMT() where appropriate
This should silence a few clang warnings. This was reported by Florian.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13595
2013-10-01 16:55:58 +00:00
Florian Krohm
abe71bded5 Followup to r13553 which caused some build failures.
(1) Detect availability of pthread_setname_np. Ignore testcases
    memcheck/tests/threadname[_xml] if not available.
(2) Enable _GNU_SOURCE to avold compiler warnings.
(3) In threadname_xml filter out stackframes referring to system
    libraries. Added tests/filter_xml_frames to do that.
(4) Adjust .exp files as needed
(5) Do not ship stdout.exp for memcheck/tests/threadname[_xml].


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13557
2013-09-17 20:15:36 +00:00
Florian Krohm
6d15b5deb4 Include pub_core/tool_clreq.h instead of valgrind.h where apropriate.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13555
2013-09-16 20:56:35 +00:00
Bart Van Assche
038beeccc0 drd: Fix bug #323905
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13511
2013-08-24 17:53:00 +00:00
Bart Van Assche
46135647c9 drd: Add command-line option --trace-sectsuppr
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13509
2013-08-24 17:51:18 +00:00
Bart Van Assche
d73260d5b0 drd/tests/concurrent_close: Add
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13508
2013-08-24 17:50:38 +00:00
Philippe Waroquiers
4c9052b4d6 fix incorrect lineno in supp error msgs+ -v give filename+lineno of used supp.
If a suppression file contains an error, the lineno reported could be wrong.
Also, give filename and lineno of the used suppressions in -v debugging output.

The fix consists in ensuring that tool specific read_extra function gets
the Int* lineno pointer, together with other VG_(get_line) parameters.






git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13469
2013-07-22 22:00:13 +00:00
Petar Jovanovic
5a593208b1 add and update exp files for drd/tests/annotate_trace_memory
exp-32bit files needed minor update for the last store, and some mips32
platforms also need additional exp-mips32 due to different way of loading
and storing double values.

This fixes drd/tests/annotate_trace_memory on different 32-bit platforms.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13414
2013-06-02 02:59:07 +00:00
Mark Wielaard
f9b7448882 Revert "Disable drd/tests/annotate_trace_memory[_xml].vgtest on arm and ppc."
The tests have been changed to not depend on atomic 64bit add_and_fetch.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13408
2013-05-22 20:43:25 +00:00
Bart Van Assche
4cbf288c81 drd/tests/annotate_trace_memory no longer depends on 64-bit atomics
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13407
2013-05-22 18:01:16 +00:00
Bart Van Assche
10fb98e91f drd/tests/annotate_trace_memory: Make this test more ARM/PPC friendly (#318643)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13406
2013-05-22 16:30:29 +00:00
Mark Wielaard
cd4df4ef9a Disable drd/tests/annotate_trace_memory[_xml].vgtest on arm and ppc.
Workaround for bug #318643. Disable the tests for now so they don't
go into an infinite loop and fill up the disks on arm, ppc32 or ppc64.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13402
2013-05-22 10:21:02 +00:00
Mark Wielaard
b81e3c86b6 Fix double 'the the' in documentation.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13363
2013-04-05 13:19:12 +00:00