Hi, On Tue, Mar 29, 2016 at 09:55:53AM -0400, Marc-André Lureau wrote: > ack (that makes me wonder if we should have a global EGLDisplay instead of each widget). Single EGLDisplay would work with multi-monitor? > > ----- Original Message ----- > > 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) > > --- > > src/spice-widget-egl.c | 1 + > > 1 file changed, 1 insertion(+) > > > > 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 > > -- > > 2.5.5 > > > > _______________________________________________ > > Spice-devel mailing list > > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > > https://lists.freedesktop.org/mailman/listinfo/spice-devel > > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel