Closed Bug 1718131 Opened 3 years ago Closed 3 years ago

Multiple leaks rooted on XREMain::mGdkDisplay

Categories

(Core :: Widget: Gtk, defect)

defect

Tracking

()

RESOLVED FIXED
91 Branch
Tracking Status
firefox91 --- fixed

People

(Reporter: glandium, Assigned: glandium)

References

Details

Attachments

(2 files)

[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 TEST-UNEXPECTED-FAIL | valgrind-test | 32 bytes in 1 blocks are definitely lost at malloc / XextAddDisplay / DRI2QueryExtension / dri2CreateDisplay
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430== 32 bytes in 1 blocks are definitely lost in loss record 5,201 of 11,617
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    at 0x483577F: malloc+111 (vg_replace_malloc.c:307)
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x76F90BF: XextAddDisplay+47 (extutil.c:106)
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x119252E0: DRI2QueryExtension+16 (dri2.c:210)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11927B97: dri2CreateDisplay+39 (dri2_glx.c:1419)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917909: __glXInitialize (glxext.c:929)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917909: __glXInitialize+905 (glxext.c:857)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11912F63: GetGLXPrivScreenConfig+35 (glxcmds.c:174)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x119138B0: glXQueryServerString+48 (glxcmds.c:1352)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6ECA878: epoxy_glx_version+40 (in /usr/lib/x86_64-linux-gnu/libepoxy.so.0.0.0)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F7D64: gdk_x11_screen_init_gl+180 (gdkglcontext-x11.c:869)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F8101: _gdk_x11_screen_update_visuals_for_gl+241 (gdkglcontext-x11.c:1213)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6400B87: _gdk_x11_screen_init_visuals+1367 (gdkvisual-x11.c:309)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63FDDB5: _gdk_x11_screen_new+229 (gdkscreen-x11.c:940)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63EDF49: _gdk_x11_display_open+201 (gdkdisplay-x11.c:1602)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63C29EC: gdk_display_manager_open_display+332 (gdkdisplaymanager.c:472)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B3109: XREMain::XRE_mainStartup(bool*)+2505 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:4356)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B808B: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)+987 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5433)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B8469: XRE_main(int, char**, mozilla::BootstrapConfig const&)+153 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5504)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: do_main (checkouts/gecko/browser/app/nsBrowserApp.cpp:225)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: main+1203 (checkouts/gecko/browser/app/nsBrowserApp.cpp:378)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 TEST-UNEXPECTED-FAIL | valgrind-test | 32 bytes in 1 blocks are definitely lost at malloc / XextAddDisplay / DRI2QueryExtension / dri2CreateDisplay
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430== 32 bytes in 1 blocks are definitely lost in loss record 5,201 of 11,617
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    at 0x483577F: malloc+111 (vg_replace_malloc.c:307)
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x76F90BF: XextAddDisplay+47 (extutil.c:106)
[task 2021-06-24T08:00:59.960Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x119252E0: DRI2QueryExtension+16 (dri2.c:210)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11927B97: dri2CreateDisplay+39 (dri2_glx.c:1419)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917909: __glXInitialize (glxext.c:929)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917909: __glXInitialize+905 (glxext.c:857)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11912F63: GetGLXPrivScreenConfig+35 (glxcmds.c:174)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x119138B0: glXQueryServerString+48 (glxcmds.c:1352)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6ECA878: epoxy_glx_version+40 (in /usr/lib/x86_64-linux-gnu/libepoxy.so.0.0.0)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F7D64: gdk_x11_screen_init_gl+180 (gdkglcontext-x11.c:869)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F8101: _gdk_x11_screen_update_visuals_for_gl+241 (gdkglcontext-x11.c:1213)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6400B87: _gdk_x11_screen_init_visuals+1367 (gdkvisual-x11.c:309)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63FDDB5: _gdk_x11_screen_new+229 (gdkscreen-x11.c:940)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63EDF49: _gdk_x11_display_open+201 (gdkdisplay-x11.c:1602)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63C29EC: gdk_display_manager_open_display+332 (gdkdisplaymanager.c:472)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B3109: XREMain::XRE_mainStartup(bool*)+2505 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:4356)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B808B: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)+987 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5433)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B8469: XRE_main(int, char**, mozilla::BootstrapConfig const&)+153 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5504)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: do_main (checkouts/gecko/browser/app/nsBrowserApp.cpp:225)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: main+1203 (checkouts/gecko/browser/app/nsBrowserApp.cpp:378)
[task 2021-06-24T08:00:59.962Z] 08:00:59     INFO -  25:02.54 ==12430==
[task 2021-06-24T08:00:59.965Z] 08:00:59     INFO -  25:02.54 TEST-UNEXPECTED-FAIL | valgrind-test | 32 bytes in 1 blocks are definitely lost at malloc / XextAddDisplay / XF86DRIQueryExtension / driCreateDisplay
[task 2021-06-24T08:00:59.965Z] 08:00:59     INFO -  25:02.54 ==12430== 32 bytes in 1 blocks are definitely lost in loss record 5,202 of 11,617
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    at 0x483577F: malloc+111 (vg_replace_malloc.c:307)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x76F90BF: XextAddDisplay+47 (extutil.c:106)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11929170: XF86DRIQueryExtension+16 (XF86dri.c:101)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11929046: driCreateDisplay+38 (dri_glx.c:1000)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917915: __glXInitialize (glxext.c:930)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11917915: __glXInitialize+917 (glxext.c:857)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x11912F63: GetGLXPrivScreenConfig+35 (glxcmds.c:174)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x119138B0: glXQueryServerString+48 (glxcmds.c:1352)
[task 2021-06-24T08:00:59.966Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6ECA878: epoxy_glx_version+40 (in /usr/lib/x86_64-linux-gnu/libepoxy.so.0.0.0)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F7D64: gdk_x11_screen_init_gl+180 (gdkglcontext-x11.c:869)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63F8101: _gdk_x11_screen_update_visuals_for_gl+241 (gdkglcontext-x11.c:1213)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x6400B87: _gdk_x11_screen_init_visuals+1367 (gdkvisual-x11.c:309)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63FDDB5: _gdk_x11_screen_new+229 (gdkscreen-x11.c:940)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63EDF49: _gdk_x11_display_open+201 (gdkdisplay-x11.c:1602)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x63C29EC: gdk_display_manager_open_display+332 (gdkdisplaymanager.c:472)
[task 2021-06-24T08:00:59.967Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B3109: XREMain::XRE_mainStartup(bool*)+2505 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:4356)
[task 2021-06-24T08:00:59.968Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B808B: XREMain::XRE_main(int, char**, mozilla::BootstrapConfig const&)+987 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5433)
[task 2021-06-24T08:00:59.968Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0xF3B8469: XRE_main(int, char**, mozilla::BootstrapConfig const&)+153 (checkouts/gecko/toolkit/xre/nsAppRunner.cpp:5504)
[task 2021-06-24T08:00:59.968Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: do_main (checkouts/gecko/browser/app/nsBrowserApp.cpp:225)
[task 2021-06-24T08:00:59.968Z] 08:00:59     INFO -  25:02.54 ==12430==    by 0x12B0F3: main+1203 (checkouts/gecko/browser/app/nsBrowserApp.cpp:378)
[task 2021-06-24T08:00:59.968Z] 08:00:59     INFO -  25:02.54 ==12430==
Pushed by mh@glandium.org:
https://hg.mozilla.org/integration/autoland/rev/19805fbf94a3
Close GdkDisplay in XREMain destructor. r=stransky

Off the top of your head, any idea how releasing the gdk display on shutdown could cause leaks in servo?

Flags: needinfo?(emilio)

(well I guess it doesn't cause them, it unveils them)

AFAICT, it's a voluntary leak. https://searchfox.org/mozilla-central/rev/fc95c6ad297d9d257f05599d01741503f3f57326/servo/components/style/sharing/mod.rs#511
I'm mystified that ASan doesn't complain about it already...

(testing suppressions on try)

Flags: needinfo?(emilio)
Pushed by mh@glandium.org:
https://hg.mozilla.org/integration/autoland/rev/e301f30010f4
Add LSan suppressions for intentional leaks that somehow LSan didn't catch before. r=emilio
https://hg.mozilla.org/integration/autoland/rev/41d6f4cf3ec3
Close GdkDisplay in XREMain destructor. r=stransky

(In reply to Mike Hommey [:glandium] from comment #6)

I'm mystified that ASan doesn't complain about it already...

Unlike our other leak checkers, LSan doesn't report leaked objects that are transitively reachable from global data. That might be the cause of this.

There's some discussion of precisely what that means (which you probably understand better than me) on this page, in the discussion of the "root set": https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizerDesignDocument

(In reply to Andrew McCreight [:mccr8] from comment #10)

(In reply to Mike Hommey [:glandium] from comment #6)

I'm mystified that ASan doesn't complain about it already...

Unlike our other leak checkers, LSan doesn't report leaked objects that are transitively reachable from global data. That might be the cause of this.

There's some discussion of precisely what that means (which you probably understand better than me) on this page, in the discussion of the "root set": https://github.com/google/sanitizers/wiki/AddressSanitizerLeakSanitizerDesignDocument

I don't see the connection between GDK display state and servo global state, though...

Also, that document suggests those leaks should be ignored. How are they appearing now?

Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → 91 Branch
Regressions: 1719152
Regressions: 1719237
Regressions: 1720646
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: