### !!! Please do not add suppressions for new leaks in Gecko code, unless they are intentional !!!

###
### Some of these leak in every test run.
###

# LSan runs with a shallow stack depth and no debug symbols, so some small intentional
# leaks in system libraries show up with this.  You do not want this enabled
# when running locally with a deep stack, as it can catch too much.
leak:libc.so

# nsComponentManagerImpl intentionally leaks factory entries, and probably some other stuff.
leak:nsComponentManagerImpl
# These two variants are needed when fast unwind is disabled and stack depth is limited.
leak:mozJSComponentLoader::LoadModule
leak:nsNativeModuleLoader::LoadModule

# Bug 981220 - Pixman fails to free TLS memory.
leak:pixman_implementation_lookup_composite

# Bug 987918 - Font shutdown leaks when CLEANUP_MEMORY is not enabled.
leak:libfontconfig.so
leak:GI___strdup
# The symbol is really __GI___strdup, but if you have the leading _, it doesn't suppress it.

# Bug 1078015 - If the process terminates during a PR_Sleep, LSAN  detects a leak
leak:PR_Sleep

###
### Bug 979928 - WebRTC leaks. m2, m3.
###

# WebRTC leaks added for Mochitest 2.
leak:NR_reg_init
# nr_reg_local_init should be redundant with NR_reg_init, but with 34 on Aurora
# we get less stack frames for some reason.
leak:nr_reg_local_init
leak:r_log_register
leak:nr_reg_set

# Bug 1187518 - SCTP leaks in child process while running WebRTC tests.
leak:recv_function_udp


###
### Many leaks only affect some test suites.  The suite annotations are not checked.
###

# Bug 987385 - Various plugin leaks. m3
leak:mozilla::plugins::PPluginInstanceParent::CallNPP_HandleEvent
leak:mozilla::plugins::PPluginModuleParent::OnCallReceived

# Bug 987925 - Small leak under PK11_ChangePW. m5
leak:sec_asn1e_allocate_item
leak:PORT_Strdup_Util

# Bug 1021302 - Leak of fds allocated in nsSocketTransport::BuildSocket(). m1, m5, dt, oth
leak:nsSocketTransport::BuildSocket
leak:nsServerSocket::OnSocketReady

# Bug 1021350 - Small leak under event_base_once. m1, m4, bc3
leak:event_base_once

# Bug 1021854 - nsFileStreamBase::DoOpen() leaking fds. bc1, oth
leak:nsLocalFile::OpenNSPRFileDesc

# Bug 1022010 - Small leak under _render_glyph_outline. bc1
leak:_render_glyph_outline

# Bug 1023548 - Small leak under SECITEM_AllocItem_Util. bc1, bc3
leak:SECITEM_AllocItem_Util

# This is a one-time leak, so it is probably okay to ignore. bc3, oth
leak:GlobalPrinters::InitializeGlobalPrinters
leak:nsPSPrinterList::GetPrinterList

# Bug 1028456 - More leaks with _PR_Getfd, in nsLocalFile::CopyToNative and do_create. bc1, bc3
leak:_PR_Getfd

# Bug 1028483 - The XML parser sometimes leaks an object. bc3
leak:processInternalEntity

# Bug 1187421 - With e10s, NSS does not always free the error stack. m1.
leak:nss_ClearErrorStack

# Bug 1122045 - Leaks in MessageLoop::MessageLoop()
leak:MessageLoop::MessageLoop
# This may not actually be related to MessageLoop.
leak:base::WaitableEvent::TimedWait
leak:MessageLoop::PostTask_Helper

# Bug 1189430 - DNS leaks in mochitest-chrome.
leak:nsDNSService::AsyncResolveExtended
leak:_GetAddrInfo_Portable

# Bug 1189568 - Indirect leaks of IMContextWrapper and nsIntRect.
leak:nsWindow::Create
leak:nsBaseWidget::StoreWindowClipRegion


###
### Leaks with system libraries in their stacks. These show up across a number of tests.
### Better symbols and disabling fast stackwalking may help diagnose these.
###

leak:libcairo.so
leak:libdl.so
leak:libdricore.so
leak:libdricore9.2.1.so
leak:libGL.so
leak:libglib-2.0.so
leak:libp11-kit.so
leak:libpixman-1.so
leak:libpulse.so
leak:libpulsecommon-1.1.so
leak:libresolv.so
leak:libstdc++.so
leak:libXrandr.so
leak:pthread_setspecific_internal
leak:swrast_dri.so
