f631b021ceaf3a2fd3908a413255c3d82b88dea5 |
|
13-Mar-2015 |
florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Sort locks by their guestaddr to make the error output independent of the dynamically allocated Lock addresses. This restores helgrind/tests/locked_vs_unlocked2.stderr.exp from r14931. While regtesting the patch I've observed intermittent failures of helgrind/tests/hg05_race2 like so: --- ../../helgrind/tests/hg05_race2.stderr.exp (revision 15001) +++ ../../helgrind/tests/hg05_race2.stderr.exp (working copy) @@ -26,8 +26,7 @@ at 0x........: th (hg05_race2.c:17) by 0x........: mythread_wrapper (hg_intercepts.c:...) ... - Location 0x........ is 0 bytes inside foo.poot[5].plop[11], - declared at hg05_race2.c:24, in frame #x of thread x + Address 0x........ is on thread #x's stack ---------------------------------------------------------------- @@ -42,8 +41,7 @@ at 0x........: th (hg05_race2.c:17) by 0x........: mythread_wrapper (hg_intercepts.c:...) ... - Location 0x........ is 0 bytes inside foo.poot[5].plop[11], - declared at hg05_race2.c:24, in frame #x of thread x + Address 0x........ is on thread #x's stack Surely, that's something else. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15009 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
1e802b6a8d0d4b7b630d2a1dd9683c7c889b01a3 |
|
13-Feb-2015 |
florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Add command line flag --max-threads=<integer> to increase the number of threads that valgrind can handle. No recompile is needed. Part of fixing BZ #337869. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14932 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
46daf0d598c38c9251964712d894f0fcd3cc4143 |
|
29-Jul-2014 |
philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Helgrind lock related error msg improvements. * Add lock announcements in various helgrind errors that were not announcing the locks * ensure locks are also announced in xml (note that this is compatible with xml protocol version 4, so no impact on GUI which properly implement the protocol) Changes done: * Like other HG record_error functions, HG_(record_error_LockOrder) is now passing Lock* rather than lock guest addresses. * update exp files for tests that were showing locks without announcing them * change tc14_laog_dinphils.c and tc15_laog_lockdel.c so as to have same sizes on 32 and 64 bits systems for allocated or symbol sizes. * factorise all code that was announcing first lock observation * enable xml lock announcement git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14204 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
8061201f9eaaf2fc6a672f631310662749a6527f |
|
24-Jul-2014 |
philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Describe the lock address in a lock announcement message. (note that some error messages are not announcing the lock, which is not that nice). At least the lock order violation message do not announce locks. That should be improved/fixed git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14188 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
04910c3b6f14d0542b9a21896a4e96f497de4596 |
|
18-May-2014 |
philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
on ppc64, pthread_create_WRK is not (always) produced in the stacktrace showing where a thread was created. This makes many tests fail => use sed to delete pthread_create_WRK from the stacktrace to let tests succeed on ppc64. With this change, on ppc64 gcc110 (fedora 18), helgrind failures goes from 28 tests failing to 4, with following reasons: helgrind/tests/pth_cond_destroy_busy (stderr) (6 errors instead of 3 in the summary line ???) helgrind/tests/tc06_two_races_xml (stderr) similar change needed in filter_xml to del pthread_create_WRK helgrind/tests/tc18_semabuse (stderr) - with error code 22 (EINVAL: Invalid argument) + with error code 38 (ENOSYS: Function not implemented) helgrind/tests/tc20_verifywrap (stderr) - with error code 22 (EINVAL: Invalid argument) + with error code 38 (ENOSYS: Function not implemented) More details about the stacktrace not containing pthread_create_WRK: -------------------------------------------------------------------- Here is the stacktrace obtained by GDB+vgdb: (gdb) bt #0 0x0000008074f7ac5c in .__clone () from /lib64/libc.so.6 #1 0x000000807517b1ec in do_clone (pd=0x4c6f200, attr=0x8075189c90 <default_attr>, stackaddr=<optimized out>, stopped=<optimized out>, fct=@0x80751a01e0: 0x807517c500 <start_thread>, clone_flags=4001536) at ../nptl/sysdeps/pthread/createthread.c:74 #2 0x000000000403ed0c in pthread_create_WRK (thread=<error reading variable: value has been optimized out>, attr=<error reading variable: value has been optimized out>, start=<error reading variable: value has been optimized out>, arg=0xfff00ee18) at hg_intercepts.c:269 #3 0x000000000403ef1c in _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa (thread=<optimized out>, attr=<optimized out>, start=<optimized out>, arg=<optimized out>) at hg_intercepts.c:300 #4 0x000000003806f1d8 in ?? () #5 0x0000008074e9fb94 in generic_start_main (main=@0x100200d8: 0x100013a0 <main>, argc=<optimized out>, ubp_av=0xfff00f2d8, auxvec=0xfff00f408, init=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>, fini=<optimized out>) at ../csu/libc-start.c:225 #6 0x0000008074e9fd90 in __libc_start_main (argc=<optimized out>, ubp_av=<optimized out>, ubp_ev=<optimized out>, auxvec=<optimized out>, rtld_fini=<optimized out>, stinfo=<optimized out>, stack_on_entry=<optimized out>) at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:91 #7 0x0000000000000000 in ?? () (gdb) and here is the stacktrace produced by Valgrind unwinder: Thread 1: status = VgTs_Runnable ==41687== at 0x8074F7AC5C: clone (in /usr/lib64/libc-2.16.so) ==41687== by 0x807517B1EB: do_clone.constprop.3 (createthread.c:74) ==41687== by 0x403EF1B: pthread_create@* (hg_intercepts.c:300) ==41687== by 0x10001597: main (tc19_shadowmem.c:172) valgrind stack top usage: 15328 of 1048576 When the 2nd clone break is encountered (in the child thread), here is the GDB stacktraces: Thread 2 (Thread 6028): #0 0x0000008074f75fb0 in .madvise () from /lib64/libc.so.6 #1 0x000000807517c700 in start_thread (arg=0x4c6f200) at pthread_create.c:402 #2 0x0000008074f7acf0 in .__clone () from /lib64/libc.so.6 Thread 1 (Thread 41687): #0 pthread_create_WRK (thread=0xfff00ee10, attr=0x0, start=@0x100200e8: 0x10001dd0 <steer>, arg=0xfff00ee18) at hg_intercepts.c:248 #1 0x000000000403ef1c in _vgw00000ZZ_libpthreadZdsoZd0_pthreadZucreateZAZa (thread=<optimized out>, attr=<optimized out>, start=<optimized out>, arg=<optimized out>) at hg_intercepts.c:300 #2 0x000000003806f1d8 in ?? () #3 0x0000008074e9fb94 in generic_start_main (main=@0x100200d8: 0x100013a0 <main>, argc=<optimized out>, ubp_av=0xfff00f2d8, auxvec=0xfff00f408, init=<optimized out>, rtld_fini=<optimized out>, stack_end=<optimized out>, fini=<optimized out>) at ../csu/libc-start.c:225 #4 0x0000008074e9fd90 in __libc_start_main (argc=<optimized out>, ubp_av=<optimized out>, ubp_ev=<optimized out>, auxvec=<optimized out>, rtld_fini=<optimized out>, stinfo=<optimized out>, stack_on_entry=<optimized out>) at ../sysdeps/unix/sysv/linux/powerpc/libc-start.c:91 #5 0x0000000000000000 in ?? () (gdb) Here are the valgrind stacktraces: Thread 1: status = VgTs_Runnable ==41687== at 0x403EBE0: pthread_create_WRK (hg_intercepts.c:248) ==41687== by 0x403EF1B: pthread_create@* (hg_intercepts.c:300) ==41687== by 0x8074E9FB93: generic_start_main.isra.0 (libc-start.c:225) ==41687== by 0x8074E9FD8F: (below main) (libc-start.c:91) valgrind stack top usage: 15328 of 1048576 Thread 2: status = VgTs_WaitSys ==41687== at 0x8074F75FB0: madvise (in /usr/lib64/libc-2.16.so) ==41687== by 0x807517C6FF: start_thread (pthread_create.c:402) valgrind stack top usage: 10320 of 1048576 And then after a few more next/breaks: Thread 1: status = VgTs_Runnable ==41687== at 0x8074F7AC5C: clone (in /usr/lib64/libc-2.16.so) ==41687== by 0x807517B1EB: do_clone.constprop.3 (createthread.c:74) ==41687== by 0x403EF1B: pthread_create@* (hg_intercepts.c:300) ==41687== by 0x100015BB: main (tc19_shadowmem.c:173) valgrind stack top usage: 15328 of 1048576 Thread 2: status = VgTs_WaitSys ==41687== at 0x8074F75FB0: madvise (in /usr/lib64/libc-2.16.so) ==41687== by 0x807517C6FF: start_thread (pthread_create.c:402) valgrind stack top usage: 10320 of 1048576 So, pthread_create_WRK is not in the stacktrace anymore. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13983 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
07c08527f05caeb0062b42ca9a58ee774ec5fba1 |
|
14-May-2014 |
philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Factorises the address code description and printing of memcheck and helgrind in a common module: pub_tool_addrinfo.h pub_core_addrinfo.h m_addrinfo.c At the same time, the factorised code is made usable by other tools also (and is used by the gdbserver command 'v.info location' which replaces the helgrind 'describe addr' introduced 1 week ago and which is now callable by all tools). The new address description code can describe more addresses (e.g. for memcheck, if the block is not on the free list anymore, but is in an arena free list, this will also be described). Similarly, helgrind address description can now describe more addresses when --read-var-info=no is given (e.g. global symbols are described, or addresses on the stack are described as being on the stack, freed blocks in the arena free list are described, ...). See e.g. the change in helgrind/tests/annotate_rwlock.stderr.exp or locked_vs_unlocked2.stderr.exp The patch touches many files, but is basically a lot of improvements in helgrind output files. The code changes are mostly refactorisation of existing code. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13965 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
31014dae410799bfb128af2d396ee70374fa4b75 |
|
26-Sep-2011 |
florian <florian@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Change the backtrace filtering machinery for the helgrind regression bucket. Instead of removing what we don't want to see in a backtrace (e.g. path segments through libc and libpthread), we simply keep what we do want to see. That way .exp files can be generic. We need to make sure that GCC inlining does not get in the way. So all the ..._WRK function in hg_intercepts.c are attributed as noinline. The backtrace filtering is done in the new filter_helgrind script. filter_stderr is simplified quite a bit. Fixes bug #281468. See also the comments #5 and #6 there. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12045 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|
731352462d54f74f1ba0a80ee4c8d99c58dd2ef9 |
|
24-Jun-2011 |
sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Add tests for displaying of locks held by threads in races. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11827 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/locked_vs_unlocked2.stderr.exp
|