mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2025-01-26 14:06:15 +01:00
gtype: suppress valgrind memory leak warnings
The problem occurs because we keep a pointer inside the allocated block, instead of a pointer to the start of the block. This memory exists for the lifetime of the application, so let's silence it. This is probably abuse of VALGRIND_MALLOCLIKE_BLOCK(), which is really intended for use in memory allocators, but gtype.c already uses it in two other places, and it's a practical solution. I wrote another larger fix for this issue that involves keeping an array of extra pointers when running under valgrind. This is simpler. Fix suggested by Philip Withnall ``` ==180238== 16 bytes in 1 blocks are possibly lost in loss record 3,078 of 16,075 ==180238== at 0x483BB1A: calloc (vg_replace_malloc.c:762) ==180238== by 0x5489495: g_malloc0 (gmem.c:132) ==180238== by 0x5489754: g_malloc0_n (gmem.c:364) ==180238== by 0x53FDBEE: type_set_qdata_W (gtype.c:3722) ==180238== by 0x53FDEE8: type_add_flags_W (gtype.c:3787) ==180238== by 0x53FC348: g_type_register_fundamental (gtype.c:2662) ==180238== by 0x53D969B: _g_enum_types_init (genums.c:124) ==180238== by 0x53FF058: gobject_init (gtype.c:4432) ==180238== by 0x53FF082: gobject_init_ctor (gtype.c:4493) ==180238== by 0x4010F29: call_init.part.0 (dl-init.c:72) ==180238== by 0x4011030: call_init (dl-init.c:30) ==180238== by 0x4011030: _dl_init (dl-init.c:119) ==180238== by 0x4002149: ??? (in /usr/lib64/ld-2.30.so) ``` Fixes #2076
This commit is contained in:
parent
a412ffe4d3
commit
fb6e10c959
@ -442,6 +442,10 @@ type_node_any_new_W (TypeNode *pnode,
|
||||
node = G_STRUCT_MEMBER_P (node, SIZEOF_FUNDAMENTAL_INFO);
|
||||
static_fundamental_type_nodes[ftype >> G_TYPE_FUNDAMENTAL_SHIFT] = node;
|
||||
type = ftype;
|
||||
|
||||
#if ENABLE_VALGRIND
|
||||
VALGRIND_MALLOCLIKE_BLOCK (node, node_size - SIZEOF_FUNDAMENTAL_INFO, FALSE, TRUE);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
type = (GType) node;
|
||||
|
Loading…
Reference in New Issue
Block a user