Message ID | 3f1aaa1fb5b5fa6daaf4e0080faeb4b094030a06.1677617035.git.dxu@dxuuu.xyz |
---|---|
State | New |
Headers | show |
Series | qga: Add optional `merge-output` flag to guest-exec QAPI | expand |
On Wed, Mar 1, 2023 at 12:48 AM Daniel Xu <dxu@dxuuu.xyz> wrote: > > When building with `--enable-sanitizers`, I was getting quite a few > memory leak crashes from ASAN: > > [21/574] Generating pc-bios/keymaps/fr-ch with a custom command > FAILED: pc-bios/keymaps/fr-ch > /home/dxu/dev/qemu/build/qemu-keymap -f pc-bios/keymaps/fr-ch -l ch -v fr > > ================================================================= > ==3232549==ERROR: LeakSanitizer: detected memory leaks > > Direct leak of 1424 byte(s) in 1 object(s) allocated from: > #0 0x7f32636bf411 in __interceptor_calloc /usr/src/debug/gcc/gcc/... > #1 0x7f32635db73e (/usr/lib/libxkbcommon.so.0+0x2273e) > > Fix leaks by correctly decrementing refcounts on xkb structs. > > Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > --- > qemu-keymap.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/qemu-keymap.c b/qemu-keymap.c > index 229866e004..ed8cee3467 100644 > --- a/qemu-keymap.c > +++ b/qemu-keymap.c > @@ -203,6 +203,7 @@ int main(int argc, char *argv[]) > map = xkb_keymap_new_from_names(ctx, &names, XKB_KEYMAP_COMPILE_NO_FLAGS); > if (!map) { > /* libxkbcommon prints error */ > + xkb_context_unref(ctx); > exit(1); > } > > @@ -227,7 +228,11 @@ int main(int argc, char *argv[]) > state = xkb_state_new(map); > xkb_keymap_key_for_each(map, walk_map, state); > xkb_state_unref(state); > + xkb_keymap_unref(map); > + xkb_context_unref(ctx); > state = NULL; > + map = NULL; > + ctx = NULL; > > /* add quirks */ > fprintf(outfile, > -- > 2.39.1 >
diff --git a/qemu-keymap.c b/qemu-keymap.c index 229866e004..ed8cee3467 100644 --- a/qemu-keymap.c +++ b/qemu-keymap.c @@ -203,6 +203,7 @@ int main(int argc, char *argv[]) map = xkb_keymap_new_from_names(ctx, &names, XKB_KEYMAP_COMPILE_NO_FLAGS); if (!map) { /* libxkbcommon prints error */ + xkb_context_unref(ctx); exit(1); } @@ -227,7 +228,11 @@ int main(int argc, char *argv[]) state = xkb_state_new(map); xkb_keymap_key_for_each(map, walk_map, state); xkb_state_unref(state); + xkb_keymap_unref(map); + xkb_context_unref(ctx); state = NULL; + map = NULL; + ctx = NULL; /* add quirks */ fprintf(outfile,
When building with `--enable-sanitizers`, I was getting quite a few memory leak crashes from ASAN: [21/574] Generating pc-bios/keymaps/fr-ch with a custom command FAILED: pc-bios/keymaps/fr-ch /home/dxu/dev/qemu/build/qemu-keymap -f pc-bios/keymaps/fr-ch -l ch -v fr ================================================================= ==3232549==ERROR: LeakSanitizer: detected memory leaks Direct leak of 1424 byte(s) in 1 object(s) allocated from: #0 0x7f32636bf411 in __interceptor_calloc /usr/src/debug/gcc/gcc/... #1 0x7f32635db73e (/usr/lib/libxkbcommon.so.0+0x2273e) Fix leaks by correctly decrementing refcounts on xkb structs. Signed-off-by: Daniel Xu <dxu@dxuuu.xyz> --- qemu-keymap.c | 5 +++++ 1 file changed, 5 insertions(+)