mirror of
https://github.com/varun-r-mallya/sysprof.git
synced 2026-02-12 16:10:54 +00:00
Make a copy of the vdso bytes to make valgrind a little quieter.
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk> * process.c (process_get_vdso_bytes): Make a copy of the vdso bytes to make valgrind a little quieter. * binparser.c: Note to self: Save the file, *then* commit. svn path=/trunk/; revision=357
This commit is contained in:
committed by
Søren Sandmann Pedersen
parent
5ee13adc34
commit
aaa145ea9b
@ -1,3 +1,10 @@
|
|||||||
|
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
|
* process.c (process_get_vdso_bytes): Make a copy of the vdso
|
||||||
|
bytes to make valgrind a little quieter.
|
||||||
|
|
||||||
|
* binparser.c: Note to self: Save the file, *then* commit.
|
||||||
|
|
||||||
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk>
|
2007-03-02 Soren Sandmann <sandmann@daimi.au.dk>
|
||||||
|
|
||||||
Fix two leaks, both pointed out by Kjartan Maraas
|
Fix two leaks, both pointed out by Kjartan Maraas
|
||||||
|
|||||||
@ -76,6 +76,8 @@ bin_parser_free (BinParser *parser)
|
|||||||
g_free (record);
|
g_free (record);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
g_list_free (parser->records);
|
||||||
|
|
||||||
g_free (parser);
|
g_free (parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -72,8 +72,7 @@ typedef enum
|
|||||||
struct BinField {
|
struct BinField {
|
||||||
const char name[BIN_MAX_NAME];
|
const char name[BIN_MAX_NAME];
|
||||||
char type;
|
char type;
|
||||||
char n_bytes; /* number of bytes if type
|
char n_bytes; /* number of bytes in the type */
|
||||||
* is UNINTERPRETED */
|
|
||||||
};
|
};
|
||||||
|
|
||||||
BinParser * bin_parser_new (const guchar *data,
|
BinParser * bin_parser_new (const guchar *data,
|
||||||
|
|||||||
13
process.c
13
process.c
@ -175,8 +175,19 @@ process_get_vdso_bytes (gsize *length)
|
|||||||
|
|
||||||
if (strcmp (map->filename, "[vdso]") == 0)
|
if (strcmp (map->filename, "[vdso]") == 0)
|
||||||
{
|
{
|
||||||
bytes = (guint8 *)map->start;
|
|
||||||
n_bytes = map->end - map->start;
|
n_bytes = map->end - map->start;
|
||||||
|
|
||||||
|
/* Dup the memory here so that valgrind will only
|
||||||
|
* report one 1 byte invalid read instead of
|
||||||
|
* a ton when the elf parser scans the vdso
|
||||||
|
*
|
||||||
|
* The reason we get a spurious invalid read from
|
||||||
|
* valgrind is that we are getting the address directly
|
||||||
|
* from /proc/maps, and valgrind knows that its mmap()
|
||||||
|
* wrapper never returned that address. But since it
|
||||||
|
* is a legal mapping, it is legal to read it.
|
||||||
|
*/
|
||||||
|
bytes = g_memdup ((guint8 *)map->start, n_bytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user