Skip to content

kms/impl-device: Fix result listener list leak

queue_result_feedback() takes ownership of the result listeners list via meta_kms_update_take_result_listeners(), but does not free it.

==782009== 24 bytes in 1 blocks are possibly lost in loss record 6,065 of 22,719
==782009==    at 0x484186F: malloc (vg_replace_malloc.c:393)
==782009==    by 0x4D82F80: g_malloc (gmem.c:130)
==782009==    by 0x4D77DAC: g_list_append (glist.c:287)
==782009==    by 0x52E081A: meta_kms_update_add_result_listener (meta-kms-update.c:598)
==782009==    by 0x52E4100: meta_onscreen_native_swap_buffers_with_damage (meta-onscreen-native.c:1172)
==782009==    by 0x57EACF2: cogl_onscreen_swap_buffers_with_damage (cogl-onscreen.c:341)
==782009==    by 0x5202E58: swap_framebuffer (meta-stage-impl.c:324)
==782009==    by 0x5203864: meta_stage_impl_redraw_view_primary (meta-stage-impl.c:685)
==782009==    by 0x5203864: meta_stage_impl_redraw_view (meta-stage-impl.c:759)
==782009==    by 0x52F1F66: meta_stage_native_redraw_view (meta-stage-native.c:144)
==782009==    by 0x509EDB3: handle_frame_clock_frame (clutter-stage-view.c:1259)
==782009==    by 0x506D738: clutter_frame_clock_dispatch (clutter-frame-clock.c:791)
==782009==    by 0x506D738: frame_clock_source_dispatch (clutter-frame-clock.c:839)
==782009==    by 0x4D7C630: g_main_dispatch (gmain.c:3460)
==782009==    by 0x4D7C630: g_main_context_dispatch (gmain.c:4200)

==782009== 12,768 (10,992 direct, 1,776 indirect) bytes in 458 blocks are definitely lost in loss record 22,510 of 22,719
==782009==    at 0x484186F: malloc (vg_replace_malloc.c:393)
==782009==    by 0x4D82F80: g_malloc (gmem.c:130)
==782009==    by 0x4D77DAC: g_list_append (glist.c:287)
==782009==    by 0x52E081A: meta_kms_update_add_result_listener (meta-kms-update.c:598)
==782009==    by 0x52CA2AF: assign_cursor_plane (meta-cursor-renderer-native.c:363)
==782009==    by 0x52CA2AF: set_crtc_cursor (meta-cursor-renderer-native.c:472)
==782009==    by 0x52CA2AF: meta_cursor_renderer_native_prepare_frame (meta-cursor-renderer-native.c:584)
==782009==    by 0x509ECEB: handle_frame_clock_frame (clutter-stage-view.c:1252)
==782009==    by 0x506D738: clutter_frame_clock_dispatch (clutter-frame-clock.c:791)
==782009==    by 0x506D738: frame_clock_source_dispatch (clutter-frame-clock.c:839)
==782009==    by 0x4D7C630: g_main_dispatch (gmain.c:3460)
==782009==    by 0x4D7C630: g_main_context_dispatch (gmain.c:4200)
==782009==    by 0x4D7C8B7: g_main_context_iterate.isra.0 (gmain.c:4276)
==782009==    by 0x4D7CB76: g_main_loop_run (gmain.c:4479)
==782009==    by 0x52307E5: meta_context_run_main_loop (meta-context.c:482)
==782009==    by 0x402924: main (main.c:663)

==782009== 22,752 (20,112 direct, 2,640 indirect) bytes in 838 blocks are definitely lost in loss record 22,581 of 22,719
==782009==    at 0x484186F: malloc (vg_replace_malloc.c:393)
==782009==    by 0x4D82F80: g_malloc (gmem.c:130)
==782009==    by 0x4D77DAC: g_list_append (glist.c:287)
==782009==    by 0x52E081A: meta_kms_update_add_result_listener (meta-kms-update.c:598)
==782009==    by 0x52E4100: meta_onscreen_native_swap_buffers_with_damage (meta-onscreen-native.c:1172)
==782009==    by 0x57EACF2: cogl_onscreen_swap_buffers_with_damage (cogl-onscreen.c:341)
==782009==    by 0x5202E58: swap_framebuffer (meta-stage-impl.c:324)
==782009==    by 0x5203864: meta_stage_impl_redraw_view_primary (meta-stage-impl.c:685)
==782009==    by 0x5203864: meta_stage_impl_redraw_view (meta-stage-impl.c:759)
==782009==    by 0x52F1F66: meta_stage_native_redraw_view (meta-stage-native.c:144)
==782009==    by 0x509EDB3: handle_frame_clock_frame (clutter-stage-view.c:1259)
==782009==    by 0x506D738: clutter_frame_clock_dispatch (clutter-frame-clock.c:791)
==782009==    by 0x506D738: frame_clock_source_dispatch (clutter-frame-clock.c:839)
==782009==    by 0x4D7C630: g_main_dispatch (gmain.c:3460)
==782009==    by 0x4D7C630: g_main_context_dispatch (gmain.c:4200)

Merge request reports