0c9ac8d0deca2f2a552fb2b0cab24efe6191bac7 |
|
18-Jul-2014 |
philippe <philippe@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Patch adding (or showing the proper/not confusing) helgrind thread nr for block and stack address description. * A race condition on an allocated block shows the stacktrace, but does not show the thread # that allocated the block. This patch adds the output of the thread # that allocated the block. * The patch also fixes the confusion that might appear between the core threadid and the helgrind thread nr in Stack address description: A printed stack addrinfo was containing a thread id, while all other helgrind messages are using (supposed to use) an 'helgrind thread #' which is used in the thread announcement. Basically, the idea is to let a tool set a "tool specific thread nr' in an addrinfo. The pretty printing of the addrinfo is then by preference showing this thread nr (if it was set, i.e. different of 0). Currently, only helgrind uses this addrinfo tnr. Note: in xml mode, the output is matching the protocol description. I.e., GUI should not be impacted by this change, if they properly implement the xml protocol. * Also, make the output produced by m_addrinfo consistent: The message 'block was alloc'd at' is changed to be like all other output : one character indent, and starting with an uppercase git-svn-id: svn://svn.valgrind.org/valgrind/trunk@14175 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.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/pth_barrier1.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/pth_barrier1.stderr.exp
|
4c02d0e766a08ad9c27a3154abdff851d044db0a |
|
06-Oct-2011 |
bart <bart@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
helgrind/tests/pth_barrier*: Update expected output after drd/tests/pth_barrier.c changes git-svn-id: svn://svn.valgrind.org/valgrind/trunk@12107 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.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/pth_barrier1.stderr.exp
|
b5cb85f9439c6869ff0be9a3517b1a39d7ad44d3 |
|
13-Aug-2011 |
bart <bart@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Update expected output git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11971 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.stderr.exp
|
9af8d1e21468cbacdefc437b312ba1fa95fcba16 |
|
24-Jun-2011 |
sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Fix a bunch of helgrind .stderr.exp-s following r11824 (merge of branches/HGDEV2) git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11825 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.stderr.exp
|
70585b875867a1b094cb4dc088729b0f1a3a273e |
|
11-Mar-2010 |
sewardj <sewardj@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Update expected outputs following r11089. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11090 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.stderr.exp
|
cab64bca3a865a294b2c20f158c8c2182fa4eb7e |
|
12-Aug-2009 |
njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Update .exp files for r10783. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@10784 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.stderr.exp
|
553c42fad6eeae28d751806ff9c2803c41e80310 |
|
13-Mar-2009 |
njn <njn@a5019735-40e9-0310-863c-91ae7b9d1cf9> |
Added better filtering for Helgrind tests, removing all unreliable stack traces, and a few other unreliable pieces. This allowed most of the tests to be reduced to a single .stderr.exp file. It also means that all Helgrind tests succeed on my AMD64/Linux box when configured with --enable-only32bit, whereas previously 20 of them failed. Also tweaked a couple non-Helgrind filters a tiny bit. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@9389 a5019735-40e9-0310-863c-91ae7b9d1cf9
/external/valgrind/helgrind/tests/pth_barrier1.stderr.exp
|