Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • gtk gtk
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,541
    • Issues 1,541
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 221
    • Merge requests 221
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOMEGNOME
  • gtkgtk
  • Issues
  • #3450
Closed
Open
Issue created Dec 05, 2020 by Sebastian Keller@skellerDeveloper

GtkAtSpiContext leaks context_path on repeated realize/unrealize calls

The old self->context_path in gtk_at_spi_context_realize() gets overwritten if realize/unrealize are called repeatedly, because it is not free'd in gtk_at_spi_context_unrealize(). This can be seen for example when switching between stack pages in widget factory:

==132117== 2,706 bytes in 41 blocks are definitely lost in loss record 34,272 of 34,816
==132117==    at 0x4839809: malloc (vg_replace_malloc.c:307)
==132117==    by 0x5135600: g_malloc (gmem.c:106)
==132117==    by 0x514F8DE: g_strconcat (gstrfuncs.c:594)
==132117==    by 0x4C1DFB8: gtk_at_spi_context_realize (gtkatspicontext.c:1469)
==132117==    by 0x49219E4: gtk_at_context_realize (gtkatcontext.c:661)
==132117==    by 0x49219E4: gtk_at_context_realize (gtkatcontext.c:655)
==132117==    by 0x4B60202: gtk_widget_root (gtkwidget.c:2353)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117==    by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117==    by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117==    by 0x4B60AF7: gtk_widget_reposition_after (gtkwidget.c:5773)
==132117==    by 0x4ABC1E7: gtk_stack_add_page (gtkstack.c:1465)
Assignee
Assign to
Time tracking