In VALGRIND_PRINTF write out the thread name to xml.

Patch by Matthias Schwarzott <zzam@gentoo.org>.


git-svn-id: svn://svn.valgrind.org/valgrind/trunk@15460
This commit is contained in:
Florian Krohm 2015-07-30 21:49:49 +00:00
parent 12d2c103ad
commit f5ca26042c
6 changed files with 25 additions and 7 deletions

1
NEWS
View File

@ -277,6 +277,7 @@ n-i-bz (vex 3098) Avoid generation of Neon insns on non-Neon hosts
n-i-bz Enable rt_sigpending syscall on ppc64 linux.
n-i-bz mremap did not work properly on shared memory
n-i-bz Fix incorrect sizeof expression in syswrap-xen.c reported by Coverity
n-i-bz In VALGRIND_PRINTF write out thread name, if any, to xml
Release 3.10.1 (25 November 2014)

View File

@ -1814,6 +1814,9 @@ Int print_client_message( ThreadId tid, const HChar *format,
VG_(printf_xml)( "<clientmsg>\n" );
VG_(printf_xml)( " <tid>%d</tid>\n", tid );
const ThreadState *tst = VG_(get_ThreadState)(tid);
if (tst->thread_name)
VG_(printf_xml)(" <threadname>%s</threadname>\n", tst->thread_name);
VG_(printf_xml)( " <text>" );
count = VG_(vprintf_xml)( xml_format, *vargsp );
VG_(printf_xml)( " </text>\n" );

View File

@ -719,6 +719,7 @@ Definition:
<clientmsg>
<tid>INT</tid>
<threadname>NAME</threadname> if set
<text>...</text>
</clientmsg>
@ -726,12 +727,17 @@ OR
<clientmsg>
<tid>INT</tid>
<threadname>NAME</threadname> if set
<text>...</text>
STACK
</clientmsg>
* The <tid> tag indicates the Valgrind thread number.
* The <threadname> tag identifies the name of the thread if it was
set by the client application. If no name was set, the tag is
omitted.
* The <text> tag indicates the message as specified in the client request
(properly translated to XML).

View File

@ -11,7 +11,7 @@
#include <sys/types.h>
#include <unistd.h>
#include <assert.h>
#include "valgrind.h"
static pthread_t children[3];
@ -49,6 +49,7 @@ void* child_fn_1 ( void* arg )
# endif
bad_things(3);
VALGRIND_PRINTF("%s", "I am in child_fn_1\n");
r = pthread_create(&children[2], NULL, child_fn_2, NULL);
assert(!r);

View File

@ -1,20 +1,20 @@
Invalid write of size 1
at 0x........: bad_things (threadname.c:21)
by 0x........: main (threadname.c:81)
by 0x........: main (threadname.c:82)
Address 0x........ is 0 bytes after a block of size 1 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:20)
by 0x........: main (threadname.c:81)
by 0x........: main (threadname.c:82)
Thread 2:
Invalid write of size 1
at 0x........: bad_things (threadname.c:21)
by 0x........: child_fn_0 (threadname.c:66)
by 0x........: child_fn_0 (threadname.c:67)
...
Address 0x........ is 0 bytes after a block of size 2 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:20)
by 0x........: child_fn_0 (threadname.c:66)
by 0x........: child_fn_0 (threadname.c:67)
...
Thread 3 try1:
@ -28,6 +28,7 @@ Invalid write of size 1
by 0x........: child_fn_1 (threadname.c:51)
...
I am in child_fn_1
Thread 4 012345678901234:
Invalid write of size 1
at 0x........: bad_things (threadname.c:21)
@ -42,9 +43,9 @@ Invalid write of size 1
Thread 1:
Invalid write of size 1
at 0x........: bad_things (threadname.c:21)
by 0x........: main (threadname.c:89)
by 0x........: main (threadname.c:90)
Address 0x........ is 0 bytes after a block of size 5 alloc'd
at 0x........: malloc (vg_replace_malloc.c:...)
by 0x........: bad_things (threadname.c:20)
by 0x........: main (threadname.c:89)
by 0x........: main (threadname.c:90)

View File

@ -185,6 +185,12 @@
</stack>
</error>
<clientmsg>
<tid>...</tid>
<threadname>try1</threadname>
<text>I am in child_fn_1
</text>
</clientmsg>
<error>
<unique>0x........</unique>
<tid>...</tid>