[Spice-commits] src/spice-widget-egl.c

Victor Toso de Carvalho victortoso at kemper.freedesktop.org
Tue Mar 29 20:53:23 UTC 2016


 src/spice-widget-egl.c |    1 +
 1 file changed, 1 insertion(+)

New commits:
commit 181ec2511902483df5c02ecf12db437d9975a53b
Author: Victor Toso <victortoso at redhat.com>
Date:   Tue Mar 29 15:09:22 2016 +0200

    egl: fix leak when display is unrealize
    
    eglTerminate should be called on unrealize. This not yet fix all the
    leaks but reduces it significantly from 318kb to 74kb as definitely lost
    and around 1mb to 8kb as indirectly lost.
    
    4,096 bytes in 1 blocks are definitely lost in loss record
    9,762 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x35688320: can_write_oacontrol (intel_extensions.c:121)
       by 0x35688320: intelInitExtensions (intel_extensions.c:279)
       by 0x35651380: brwCreateContext (brw_context.c:875)
       by 0x35602720: driCreateContextAttribs (dri_util.c:426)
       by 0xF0C48B1: dri2_create_context (egl_dri2.c:1072)
       by 0xF0BE727: eglCreateContext (eglapi.c:638)
       by 0x5461D27: spice_egl_init (spice-widget-egl.c:256)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
       by 0xB44C92E: g_signal_emit_valist (gsignal.c:3385)
       by 0xB44CC51: g_signal_emit (gsignal.c:3441)
    
    4,856 (32 direct, 4,824 indirect) bytes in 1 blocks are definitely lost
    in loss record 9,779 of 9,882
       at 0x4C2A988: calloc (vg_replace_malloc.c:711)
       by 0xF0BEEF7: _eglCreateArray (eglarray.c:71)
       by 0xF0BF420: _eglLinkConfig (eglconfig.c:90)
       by 0xF0C4F8D: dri2_add_config (egl_dri2.c:307)
       by 0xF0C66EE: dri2_x11_add_configs_for_visuals (platform_x11.c:766)
       by 0xF0C80EC: dri2_initialize_x11_dri3 (platform_x11.c:1319)
       by 0xF0C80EC: dri2_initialize_x11 (platform_x11.c:1464)
       by 0xF0C18FE: _eglMatchAndInitialize (egldriver.c:261)
       by 0xF0C19B8: _eglMatchDriver (egldriver.c:292)
       by 0xF0BDD31: eglInitialize (eglapi.c:482)
       by 0x5461A76: spice_egl_init (spice-widget-egl.c:226)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
    
    5,921 (472 direct, 5,449 indirect) bytes in 1 blocks are definitely lost
    in loss record 9,794 of 9,882
       at 0x4C2A988: calloc (vg_replace_malloc.c:711)
       by 0xF0C7E0E: dri2_initialize_x11_dri3 (platform_x11.c:1267)
       by 0xF0C7E0E: dri2_initialize_x11 (platform_x11.c:1464)
       by 0xF0C18FE: _eglMatchAndInitialize (egldriver.c:261)
       by 0xF0C19B8: _eglMatchDriver (egldriver.c:292)
       by 0xF0BDD31: eglInitialize (eglapi.c:482)
       by 0x5461A76: spice_egl_init (spice-widget-egl.c:226)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
       by 0xB44C92E: g_signal_emit_valist (gsignal.c:3385)
       by 0xB44CC51: g_signal_emit (gsignal.c:3441)
       by 0x5D2C9DB: gtk_widget_realize (gtkwidget.c:5454)
    
    16,384 bytes in 4 blocks are definitely lost in loss record 9,854 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x3568AB30: intel_miptree_map_raw (intel_mipmap_tree.c:2149)
       by 0x3568CEE6: intel_miptree_map_gtt (intel_mipmap_tree.c:2182)
       by 0x3568CEE6: intel_miptree_map (intel_mipmap_tree.c:2774)
       by 0x35692851: intel_map_texture_image (intel_tex.c:227)
       by 0x35447C3B: store_texsubimage (texstore.c:1069)
       by 0x35447E9F: _mesa_store_teximage (texstore.c:1125)
       by 0x3543D9BA: _mesa_get_fallback_texture (texobj.c:1056)
       by 0x35443E1E: UnknownInlinedFun (texstate.c:562)
       by 0x35443E1E: update_program_texture_state (texstate.c:587)
       by 0x35443E1E: UnknownInlinedFun (texstate.c:726)
       by 0x35443E1E: _mesa_update_texture (texstate.c:757)
       by 0x35420809: _mesa_update_state_locked (state.c:430)
       by 0x35420ED0: _mesa_update_state (state.c:504)
       by 0x3535BF87: _mesa_Clear (clear.c:172)
       by 0x546214F: spice_egl_update_display (spice-widget-egl.c:514)
    
    32,768 bytes in 1 blocks are definitely lost in loss record 9,864 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x35683E3C: intel_batchbuffer_reset (intel_batchbuffer.c:68)
       by 0x35684052: brw_new_batch (intel_batchbuffer.c:164)
       by 0x35684052: _intel_batchbuffer_flush.part.2 (intel_batchbuffer.c:397)
       by 0x3568853B: can_write_oacontrol (intel_extensions.c:153)
       by 0x3568853B: intelInitExtensions (intel_extensions.c:279)
       by 0x35651380: brwCreateContext (brw_context.c:875)
       by 0x35602720: driCreateContextAttribs (dri_util.c:426)
       by 0xF0C48B1: dri2_create_context (egl_dri2.c:1072)
       by 0xF0BE727: eglCreateContext (eglapi.c:638)
       by 0x5461D27: spice_egl_init (spice-widget-egl.c:256)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
    
    32,768 bytes in 1 blocks are definitely lost in loss record 9,865 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x35683E3C: intel_batchbuffer_reset (intel_batchbuffer.c:68)
       by 0x35684052: brw_new_batch (intel_batchbuffer.c:164)
       by 0x35684052: _intel_batchbuffer_flush.part.2 (intel_batchbuffer.c:397)
       by 0x356887F3: can_do_pipelined_register_writes (intel_extensions.c:88)
       by 0x356887F3: intelInitExtensions (intel_extensions.c:338)
       by 0x35651380: brwCreateContext (brw_context.c:875)
       by 0x35602720: driCreateContextAttribs (dri_util.c:426)
       by 0xF0C48B1: dri2_create_context (egl_dri2.c:1072)
       by 0xF0BE727: eglCreateContext (eglapi.c:638)
       by 0x5461D27: spice_egl_init (spice-widget-egl.c:256)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
    
    98,304 bytes in 3 blocks are definitely lost in loss record 9,872 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x35683E3C: intel_batchbuffer_reset (intel_batchbuffer.c:68)
       by 0x35684052: brw_new_batch (intel_batchbuffer.c:164)
       by 0x35684052: _intel_batchbuffer_flush.part.2 (intel_batchbuffer.c:397)
       by 0x3564F834: intel_glFlush (brw_context.c:259)
       by 0xF0C3DA0: dri2_make_current (egl_dri2.c:1189)
       by 0xF0BAB1B: eglMakeCurrent (eglapi.c:703)
       by 0x546274E: spice_widget_init_egl_win (spice-widget-egl.c:316)
       by 0x546274E: spice_egl_realize_display (spice-widget-egl.c:333)
       by 0x545B89F: drawing_area_realize (spice-widget.c:586)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
       by 0xB44C92E: g_signal_emit_valist (gsignal.c:3385)
       by 0xB44CC51: g_signal_emit (gsignal.c:3441)
    
    131,072 bytes in 4 blocks are definitely lost in loss record 9,874 of 9,882
       at 0x35B19E40: drm_intel_gem_bo_map (intel_bufmgr_gem.c:1454)
       by 0x35683E3C: intel_batchbuffer_reset (intel_batchbuffer.c:68)
       by 0x356848E8: intel_batchbuffer_init (intel_batchbuffer.c:45)
       by 0x35651337: brwCreateContext (brw_context.c:848)
       by 0x35602720: driCreateContextAttribs (dri_util.c:426)
       by 0xF0C48B1: dri2_create_context (egl_dri2.c:1072)
       by 0xF0BE727: eglCreateContext (eglapi.c:638)
       by 0x5461D27: spice_egl_init (spice-widget-egl.c:256)
       by 0x545B885: drawing_area_realize (spice-widget.c:581)
       by 0xB431784: g_closure_invoke (gclosure.c:804)
       by 0xB443A40: signal_emit_unlocked_R (gsignal.c:3629)
       by 0xB44C92E: g_signal_emit_valist (gsignal.c:3385)
    
    1,080,655 (284 direct, 1,080,371 indirect) bytes in 1 blocks are
    definitely lost in loss record 9,881 of 9,882
       at 0x4C2A988: calloc (vg_replace_malloc.c:711)
       by 0x355A2221: ralloc_size (ralloc.c:113)
       by 0x355A227D: rzalloc_size (ralloc.c:134)
       by 0x355A2BEE: ra_alloc_reg_set (register_allocate.c:196)
       by 0x356D79AA: brw_alloc_reg_set(brw_compiler*, int) (brw_fs_reg_allocate.cpp:159)
       by 0x356D817D: brw_fs_alloc_reg_sets (brw_fs_reg_allocate.cpp:305)
       by 0x356FDACC: brw_compiler_create (brw_shader.cpp:84)
       by 0x35691995: intelInitScreen2 (intel_screen.c:1495)
       by 0x35602A5E: driCreateNewScreen2 (dri_util.c:144)
       by 0xF0C547B: dri2_create_screen (egl_dri2.c:674)
       by 0xF0C808F: dri2_initialize_x11_dri3 (platform_x11.c:1303)
       by 0xF0C808F: dri2_initialize_x11 (platform_x11.c:1464)
       by 0xF0C18FE: _eglMatchAndInitialize (egldriver.c:261)
    
    Acked-by: Marc-André Lureau <mlureau at redhat.com>

diff --git a/src/spice-widget-egl.c b/src/spice-widget-egl.c
index 126269f..51bb5c5 100644
--- a/src/spice-widget-egl.c
+++ b/src/spice-widget-egl.c
@@ -382,6 +382,7 @@ void spice_egl_unrealize_display(SpiceDisplay *display)
 
     eglMakeCurrent(d->egl.display, EGL_NO_SURFACE, EGL_NO_SURFACE,
                    EGL_NO_CONTEXT);
+    eglTerminate(d->egl.display);
 }
 
 G_GNUC_INTERNAL


More information about the Spice-commits mailing list