mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-14 05:45:37 +00:00
Merge inbound to mozilla-central. a=merge
This commit is contained in:
commit
b6e2939995
@ -13,4 +13,6 @@ ac_add_options --enable-coverage
|
||||
|
||||
export CFLAGS="--coverage"
|
||||
export CXXFLAGS="--coverage"
|
||||
export LDFLAGS="--coverage -L$TOOLTOOL_DIR/gtk3/usr/local/lib"
|
||||
export LDFLAGS="--coverage -L$topsrcdir/clang/lib/clang/7.0.0/lib/linux/"
|
||||
export RUSTFLAGS="-Ccodegen-units=1 -Zprofile -Zno-landing-pads"
|
||||
export LIBS="-lclang_rt.profile-x86_64"
|
||||
|
22
build/build-clang/clang-7-pre-linux64.json
Normal file
22
build/build-clang/clang-7-pre-linux64.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"llvm_revision": "336407",
|
||||
"stages": "3",
|
||||
"build_libcxx": true,
|
||||
"build_type": "Release",
|
||||
"assertions": false,
|
||||
"llvm_repo": "https://llvm.org/svn/llvm-project/llvm/trunk",
|
||||
"clang_repo": "https://llvm.org/svn/llvm-project/cfe/trunk",
|
||||
"lld_repo": "https://llvm.org/svn/llvm-project/lld/trunk",
|
||||
"compiler_repo": "https://llvm.org/svn/llvm-project/compiler-rt/trunk",
|
||||
"libcxx_repo": "https://llvm.org/svn/llvm-project/libcxx/trunk",
|
||||
"libcxxabi_repo": "https://llvm.org/svn/llvm-project/libcxxabi/trunk",
|
||||
"python_path": "/usr/bin/python2.7",
|
||||
"gcc_dir": "/builds/worker/workspace/build/src/gcc",
|
||||
"cc": "/builds/worker/workspace/build/src/gcc/bin/gcc",
|
||||
"cxx": "/builds/worker/workspace/build/src/gcc/bin/g++",
|
||||
"as": "/builds/worker/workspace/build/src/gcc/bin/gcc",
|
||||
"patches": [
|
||||
"find_symbolizer_linux.patch",
|
||||
"rename_gcov_flush.patch"
|
||||
]
|
||||
}
|
14
build/build-clang/rename_gcov_flush.patch
Normal file
14
build/build-clang/rename_gcov_flush.patch
Normal file
@ -0,0 +1,14 @@
|
||||
Index: compiler-rt/lib/profile/GCDAProfiling.c
|
||||
===================================================================
|
||||
diff --git a/compiler-rt/lib/profile/GCDAProfiling.c b/compiler-rt/lib/profile/GCDAProfiling.c
|
||||
--- a/compiler-rt/lib/profile/GCDAProfiling.c (revisione 336380)
|
||||
+++ b/compiler-rt/lib/profile/GCDAProfiling.c (copia locale)
|
||||
@@ -555,7 +555,7 @@
|
||||
fn_list_insert(&flush_fn_list, fn);
|
||||
}
|
||||
|
||||
-void __gcov_flush() {
|
||||
+void __llvm_gcov_flush() {
|
||||
struct fn_node* curr = flush_fn_list.head;
|
||||
|
||||
while (curr) {
|
@ -117,6 +117,14 @@ compartment.
|
||||
: New code, represented by the [`Debugger.Script`][script] instance
|
||||
<i>script</i>, has been loaded in the scope of the debuggees.
|
||||
|
||||
Since each function has its own [`Debugger.Script`][script], separate from
|
||||
the top-level code or function that encloses it, loading JavaScript code
|
||||
typically introduces not just a single script, but a tree of scripts
|
||||
representing the top-level code and any functions it includes. The
|
||||
`onNewScript` hook reports only the root script of such a tree. If
|
||||
necessary, the handler function can use the scripts' `getChildScripts`
|
||||
method to walk the tree and obtain all the newly introduced scripts.
|
||||
|
||||
This method's return value is ignored.
|
||||
|
||||
<code>onNewPromise(<i>promise</i>)</code>
|
||||
|
@ -229,8 +229,10 @@ class ZoneCellIter<TenuredCell> {
|
||||
if (IsBackgroundFinalized(kind) && zone->arenas.needBackgroundFinalizeWait(kind))
|
||||
rt->gc.waitBackgroundSweepEnd();
|
||||
arenaIter.init(zone, kind);
|
||||
if (!arenaIter.done())
|
||||
if (!arenaIter.done()) {
|
||||
cellIter.init(arenaIter.get(), CellIterMayNeedBarrier);
|
||||
settle();
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
@ -264,16 +266,19 @@ class ZoneCellIter<TenuredCell> {
|
||||
return cellIter.getCell();
|
||||
}
|
||||
|
||||
void next() {
|
||||
MOZ_ASSERT(!done());
|
||||
cellIter.next();
|
||||
if (cellIter.done()) {
|
||||
MOZ_ASSERT(!arenaIter.done());
|
||||
void settle() {
|
||||
while (cellIter.done() && !arenaIter.done()) {
|
||||
arenaIter.next();
|
||||
if (!arenaIter.done())
|
||||
cellIter.reset(arenaIter.get());
|
||||
}
|
||||
}
|
||||
|
||||
void next() {
|
||||
MOZ_ASSERT(!done());
|
||||
cellIter.next();
|
||||
settle();
|
||||
}
|
||||
};
|
||||
|
||||
// Iterator over the cells in a Zone, where the GC type (JSString, JSObject) is
|
||||
|
@ -970,8 +970,8 @@ linux64-ccov/debug:
|
||||
tooltool-downloads: public
|
||||
need-xvfb: true
|
||||
toolchains:
|
||||
- linux64-clang
|
||||
- linux64-rust
|
||||
- linux64-clang-7
|
||||
- linux64-rust-nightly
|
||||
- linux64-gcc
|
||||
- linux64-sccache
|
||||
|
||||
|
@ -83,6 +83,7 @@ linux64-asan/opt:
|
||||
build-platform: linux64-asan/opt
|
||||
test-sets:
|
||||
- common-tests
|
||||
- web-platform-tests
|
||||
|
||||
# Stylo sequential runs check memory and performance when using a single thread.
|
||||
linux64-stylo-sequential/opt:
|
||||
|
@ -38,6 +38,7 @@ web-platform-tests:
|
||||
default: built-projects
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-asan/opt: 2
|
||||
linux64-qr/.*: 2 # can't be tier-1 if it's not running on integration branches
|
||||
default: default
|
||||
mozharness:
|
||||
@ -92,6 +93,7 @@ web-platform-tests-reftests:
|
||||
default: built-projects
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-asan/opt: 2
|
||||
linux64-qr/.*: 2 # can't be tier-1 if it's not running on integration branches
|
||||
default: default
|
||||
mozharness:
|
||||
@ -136,6 +138,7 @@ web-platform-tests-wdspec:
|
||||
default: built-projects
|
||||
tier:
|
||||
by-test-platform:
|
||||
linux64-asan/opt: 2
|
||||
linux64-qr/.*: 2 # can't be tier-1 if it's not running on integration branches
|
||||
default: default
|
||||
|
||||
|
@ -70,6 +70,27 @@ linux64-clang-6:
|
||||
toolchains:
|
||||
- linux64-gcc-4.9
|
||||
|
||||
linux64-clang-7:
|
||||
description: "Clang 7 toolchain build"
|
||||
treeherder:
|
||||
kind: build
|
||||
platform: toolchains/opt
|
||||
symbol: TL(clang7)
|
||||
tier: 1
|
||||
worker-type: aws-provisioner-v1/gecko-{level}-b-linux-xlarge
|
||||
worker:
|
||||
max-run-time: 7200
|
||||
run:
|
||||
using: toolchain-script
|
||||
script: build-clang-7-linux.sh
|
||||
resources:
|
||||
- 'build/build-clang/build-clang.py'
|
||||
- 'build/build-clang/clang-7-pre-linux64.json'
|
||||
- 'taskcluster/scripts/misc/tooltool-download.sh'
|
||||
toolchain-artifact: public/build/clang.tar.xz
|
||||
toolchains:
|
||||
- linux64-gcc-4.9
|
||||
|
||||
linux64-clang-6-macosx-cross:
|
||||
description: "Clang 6 toolchain build with MacOS Compiler RT libs"
|
||||
treeherder:
|
||||
@ -459,7 +480,7 @@ linux64-rust-nightly:
|
||||
using: toolchain-script
|
||||
script: repack_rust.py
|
||||
arguments: [
|
||||
'--channel', 'nightly-2018-06-20',
|
||||
'--channel', 'nightly-2018-07-18',
|
||||
'--host', 'x86_64-unknown-linux-gnu',
|
||||
'--target', 'x86_64-unknown-linux-gnu',
|
||||
'--target', 'i686-unknown-linux-gnu',
|
||||
|
25
taskcluster/scripts/misc/build-clang-7-linux.sh
Executable file
25
taskcluster/scripts/misc/build-clang-7-linux.sh
Executable file
@ -0,0 +1,25 @@
|
||||
#!/bin/bash
|
||||
set -x -e -v
|
||||
|
||||
# This script is for building clang for Linux.
|
||||
|
||||
WORKSPACE=$HOME/workspace
|
||||
HOME_DIR=$WORKSPACE/build
|
||||
UPLOAD_DIR=$HOME/artifacts
|
||||
|
||||
cd $HOME_DIR/src
|
||||
|
||||
. taskcluster/scripts/misc/tooltool-download.sh
|
||||
|
||||
# gets a bit too verbose here
|
||||
set +x
|
||||
|
||||
cd build/build-clang
|
||||
# |mach python| sets up a virtualenv for us!
|
||||
../../mach python ./build-clang.py -c clang-7-pre-linux64.json
|
||||
|
||||
set -x
|
||||
|
||||
# Put a tarball in the artifacts dir
|
||||
mkdir -p $UPLOAD_DIR
|
||||
cp clang.tar.* $UPLOAD_DIR
|
@ -9,5 +9,6 @@ mozleak is a library for extracting memory leaks from leak logs files.
|
||||
from __future__ import absolute_import
|
||||
|
||||
from .leaklog import process_leak_log
|
||||
from .lsan import LSANLeaks
|
||||
|
||||
__all__ = ['process_leak_log']
|
||||
__all__ = ['process_leak_log', 'LSANLeaks']
|
||||
|
171
testing/mozbase/mozleak/mozleak/lsan.py
Normal file
171
testing/mozbase/mozleak/mozleak/lsan.py
Normal file
@ -0,0 +1,171 @@
|
||||
# This Source Code Form is subject to the terms of the Mozilla Public
|
||||
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
from __future__ import absolute_import
|
||||
import re
|
||||
|
||||
|
||||
class LSANLeaks(object):
|
||||
|
||||
"""
|
||||
Parses the log when running an LSAN build, looking for interesting stack frames
|
||||
in allocation stacks
|
||||
"""
|
||||
|
||||
def __init__(self, logger, scope=None, allowed=None):
|
||||
self.logger = logger
|
||||
self.inReport = False
|
||||
self.fatalError = False
|
||||
self.symbolizerError = False
|
||||
self.foundFrames = set()
|
||||
self.recordMoreFrames = None
|
||||
self.currStack = None
|
||||
self.maxNumRecordedFrames = 4
|
||||
self.summaryData = None
|
||||
self.scope = scope
|
||||
self.allowedMatch = None
|
||||
self.sawError = False
|
||||
|
||||
# Don't various allocation-related stack frames, as they do not help much to
|
||||
# distinguish different leaks.
|
||||
unescapedSkipList = [
|
||||
"malloc", "js_malloc", "malloc_", "__interceptor_malloc", "moz_xmalloc",
|
||||
"calloc", "js_calloc", "calloc_", "__interceptor_calloc", "moz_xcalloc",
|
||||
"realloc", "js_realloc", "realloc_", "__interceptor_realloc", "moz_xrealloc",
|
||||
"new",
|
||||
"js::MallocProvider",
|
||||
]
|
||||
self.skipListRegExp = re.compile(
|
||||
"^" + "|".join([re.escape(f) for f in unescapedSkipList]) + "$")
|
||||
|
||||
self.startRegExp = re.compile(
|
||||
"==\d+==ERROR: LeakSanitizer: detected memory leaks")
|
||||
self.fatalErrorRegExp = re.compile(
|
||||
"==\d+==LeakSanitizer has encountered a fatal error.")
|
||||
self.symbolizerOomRegExp = re.compile(
|
||||
"LLVMSymbolizer: error reading file: Cannot allocate memory")
|
||||
self.stackFrameRegExp = re.compile(" #\d+ 0x[0-9a-f]+ in ([^(</]+)")
|
||||
self.sysLibStackFrameRegExp = re.compile(
|
||||
" #\d+ 0x[0-9a-f]+ \(([^+]+)\+0x[0-9a-f]+\)")
|
||||
self.summaryRegexp = re.compile(
|
||||
"SUMMARY: AddressSanitizer: (\d+) byte\(s\) leaked in (\d+) allocation\(s\).")
|
||||
self.setAllowed(allowed)
|
||||
|
||||
def setAllowed(self, allowedLines):
|
||||
if not allowedLines:
|
||||
self.allowedRegexp = None
|
||||
else:
|
||||
self.allowedRegexp = re.compile(
|
||||
"^" + "|".join([re.escape(f) for f in allowedLines]))
|
||||
|
||||
def log(self, line):
|
||||
if re.match(self.startRegExp, line):
|
||||
self.inReport = True
|
||||
# Downgrade this from an ERROR
|
||||
self.sawError = True
|
||||
return "LeakSanitizer: detected memory leaks"
|
||||
|
||||
if re.match(self.fatalErrorRegExp, line):
|
||||
self.fatalError = True
|
||||
return line
|
||||
|
||||
if re.match(self.symbolizerOomRegExp, line):
|
||||
self.symbolizerError = True
|
||||
return line
|
||||
|
||||
if not self.inReport:
|
||||
return line
|
||||
|
||||
if line.startswith("Direct leak") or line.startswith("Indirect leak"):
|
||||
self._finishStack()
|
||||
self.recordMoreFrames = True
|
||||
self.currStack = []
|
||||
return line
|
||||
|
||||
summaryData = self.summaryRegexp.match(line)
|
||||
if summaryData:
|
||||
assert self.summaryData is None
|
||||
self._finishStack()
|
||||
self.inReport = False
|
||||
self.summaryData = (int(item) for item in summaryData.groups())
|
||||
# We don't return the line here because we want to control whether the
|
||||
# leak is seen as an expected failure later
|
||||
return
|
||||
|
||||
if not self.recordMoreFrames:
|
||||
return line
|
||||
|
||||
stackFrame = re.match(self.stackFrameRegExp, line)
|
||||
if stackFrame:
|
||||
# Split the frame to remove any return types.
|
||||
frame = stackFrame.group(1).split()[-1]
|
||||
if not re.match(self.skipListRegExp, frame):
|
||||
self._recordFrame(frame)
|
||||
return line
|
||||
|
||||
sysLibStackFrame = re.match(self.sysLibStackFrameRegExp, line)
|
||||
if sysLibStackFrame:
|
||||
# System library stack frames will never match the skip list,
|
||||
# so don't bother checking if they do.
|
||||
self._recordFrame(sysLibStackFrame.group(1))
|
||||
|
||||
# If we don't match either of these, just ignore the frame.
|
||||
# We'll end up with "unknown stack" if everything is ignored.
|
||||
return line
|
||||
|
||||
def process(self):
|
||||
failures = 0
|
||||
|
||||
if self.summaryData:
|
||||
allowed = all(allowed for _, allowed in self.foundFrames)
|
||||
self.logger.lsan_summary(*self.summaryData, allowed=allowed)
|
||||
self.summaryData = None
|
||||
|
||||
if self.fatalError:
|
||||
self.logger.error("LeakSanitizer | LeakSanitizer has encountered a fatal error.")
|
||||
failures += 1
|
||||
|
||||
if self.symbolizerError:
|
||||
self.logger.error("LeakSanitizer | LLVMSymbolizer was unable to allocate memory.\n"
|
||||
"This will cause leaks that "
|
||||
"should be ignored to instead be reported as an error")
|
||||
failures += 1
|
||||
|
||||
if self.foundFrames:
|
||||
self.logger.info("LeakSanitizer | To show the "
|
||||
"addresses of leaked objects add report_objects=1 to LSAN_OPTIONS\n"
|
||||
"This can be done in testing/mozbase/mozrunner/mozrunner/utils.py")
|
||||
|
||||
for frames, allowed in self.foundFrames:
|
||||
self.logger.lsan_leak(frames, scope=self.scope, allowed_match=allowed)
|
||||
if not allowed:
|
||||
failures += 1
|
||||
|
||||
if self.sawError and not (self.summaryData or
|
||||
self.foundFrames or
|
||||
self.fatalError or
|
||||
self.symbolizerError):
|
||||
self.logger.error("LeakSanitizer | Memory leaks detected but no leak report generated")
|
||||
|
||||
self.sawError = False
|
||||
|
||||
return failures
|
||||
|
||||
def _finishStack(self):
|
||||
if self.recordMoreFrames and len(self.currStack) == 0:
|
||||
self.currStack = {"unknown stack"}
|
||||
if self.currStack:
|
||||
self.foundFrames.add((tuple(self.currStack), self.allowedMatch))
|
||||
self.currStack = None
|
||||
self.allowedMatch = None
|
||||
self.recordMoreFrames = False
|
||||
self.numRecordedFrames = 0
|
||||
|
||||
def _recordFrame(self, frame):
|
||||
if self.allowedMatch is None and self.allowedRegexp is not None:
|
||||
self.allowedMatch = frame if self.allowedRegexp.match(frame) else None
|
||||
self.currStack.append(frame)
|
||||
self.numRecordedFrames += 1
|
||||
if self.numRecordedFrames >= self.maxNumRecordedFrames:
|
||||
self.recordMoreFrames = False
|
@ -224,6 +224,26 @@ class MachFormatter(base.BaseFormatter):
|
||||
|
||||
return rv
|
||||
|
||||
def lsan_leak(self, data):
|
||||
allowed = data.get("allowed_match")
|
||||
if allowed:
|
||||
prefix = self.term.yellow("FAIL")
|
||||
else:
|
||||
prefix = self.term.red("UNEXPECTED-FAIL")
|
||||
|
||||
return "%s LeakSanitizer: leak at %s" % (prefix, ", ".join(data["frames"]))
|
||||
|
||||
def lsan_summary(self, data):
|
||||
allowed = data.get("allowed", False)
|
||||
if allowed:
|
||||
prefix = self.term.yellow("WARNING")
|
||||
else:
|
||||
prefix = self.term.red("ERROR")
|
||||
|
||||
return ("%s | LeakSanitizer | "
|
||||
"SUMMARY: AddressSanitizer: %d byte(s) leaked in %d allocation(s)." %
|
||||
(prefix, data["bytes"], data["allocations"]))
|
||||
|
||||
def test_status(self, data):
|
||||
test = self._get_test_id(data)
|
||||
if test not in self.status_buffer:
|
||||
|
@ -277,6 +277,21 @@ class TbplFormatter(BaseFormatter):
|
||||
data['rule'] = data['rule'] or data['linter'] or ""
|
||||
return fmt.append(fmt.format(**data))
|
||||
|
||||
def lsan_leak(self, data):
|
||||
frames = data.get("frames")
|
||||
allowed_match = data.get("allowed_match")
|
||||
frame_list = ", ".join(frames)
|
||||
prefix = "TEST-UNEXPECTED-FAIL" if not allowed_match else "TEST-FAIL"
|
||||
suffix = ("" if not allowed_match
|
||||
else "INFO | LeakSanitizer | Frame %s matched a expected leak\n" % allowed_match)
|
||||
return "%s | LeakSanitizer | leak at %s\n%s" % (prefix, frame_list, suffix)
|
||||
|
||||
def lsan_summary(self, data):
|
||||
level = "INFO" if data.get("allowed", False) else "ERROR"
|
||||
return ("%s | LeakSanitizer | "
|
||||
"SUMMARY: AddressSanitizer: %d byte(s) leaked in %d allocation(s)." %
|
||||
(level, data["bytes"], data["allocations"]))
|
||||
|
||||
def _format_suite_summary(self, suite, summary):
|
||||
counts = summary['counts']
|
||||
logs = summary['unexpected_logs']
|
||||
|
@ -59,6 +59,14 @@ class StatusHandler(object):
|
||||
else:
|
||||
self.expected_statuses["PASS"] += 1
|
||||
|
||||
if action == "lsan_leak":
|
||||
if not data.get("allowed_match"):
|
||||
self.unexpected_statuses["FAIL"] += 1
|
||||
|
||||
if action == "lsan_summary":
|
||||
if not data.get("allowed", False):
|
||||
self.unexpected_statuses["FAIL"] += 1
|
||||
|
||||
def summarize(self):
|
||||
return RunSummary(
|
||||
dict(self.unexpected_statuses),
|
||||
|
@ -245,6 +245,12 @@ class Any(DataType):
|
||||
return data
|
||||
|
||||
|
||||
class Boolean(DataType):
|
||||
|
||||
def convert(self, data):
|
||||
return bool(data)
|
||||
|
||||
|
||||
class Tuple(ContainerType):
|
||||
|
||||
def _format_item_type(self, item_type):
|
||||
|
@ -11,7 +11,8 @@ import sys
|
||||
import time
|
||||
import traceback
|
||||
|
||||
from .logtypes import Unicode, TestId, TestList, Status, SubStatus, Dict, List, Int, Any, Tuple
|
||||
from .logtypes import (Unicode, TestId, TestList, Status, SubStatus, Dict, List, Int, Any, Tuple,
|
||||
Boolean)
|
||||
from .logtypes import log_action, convertor_registry
|
||||
import six
|
||||
|
||||
@ -53,6 +54,18 @@ Allowed actions, and subfields:
|
||||
min_expected - Minimum expected number of assertions
|
||||
max_expected - Maximum expected number of assertions
|
||||
|
||||
lsan_leak
|
||||
frames - List of stack frames from the leak report
|
||||
scope - An identifier for the set of tests run during the browser session
|
||||
(e.g. a directory name)
|
||||
allowed_match - A stack frame in the list that matched a rule meaning the
|
||||
leak is expected
|
||||
|
||||
lsan_summary
|
||||
bytes - Number of bytes leaked
|
||||
allocations - Number of allocations
|
||||
allowed - Boolean indicating whether all detected leaks matched allow rules
|
||||
|
||||
log
|
||||
level [CRITICAL | ERROR | WARNING |
|
||||
INFO | DEBUG] - level of the logging message
|
||||
@ -464,6 +477,18 @@ class StructuredLogger(object):
|
||||
"""
|
||||
self._log_data("assertion_count", data)
|
||||
|
||||
@log_action(List(Unicode, "frames"),
|
||||
Unicode("scope", optional=True, default=None),
|
||||
Unicode("allowed_match", optional=True, default=None))
|
||||
def lsan_leak(self, data):
|
||||
self._log_data("lsan_leak", data)
|
||||
|
||||
@log_action(Int("bytes"),
|
||||
Int("allocations"),
|
||||
Boolean("allowed", optional=True, default=False))
|
||||
def lsan_summary(self, data):
|
||||
self._log_data("lsan_summary", data)
|
||||
|
||||
@log_action()
|
||||
def shutdown(self, data):
|
||||
"""Shutdown the logger.
|
||||
|
@ -13,6 +13,8 @@ from datetime import datetime, timedelta
|
||||
# load modules from parent dir
|
||||
sys.path.insert(1, os.path.dirname(sys.path[0]))
|
||||
|
||||
import mozinfo
|
||||
|
||||
from mozharness.base.errors import BaseErrorList
|
||||
from mozharness.base.script import PreScriptAction
|
||||
from mozharness.base.vcs.vcsbase import MercurialScript
|
||||
@ -181,6 +183,8 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin):
|
||||
self.fatal("Could not create blobber upload directory")
|
||||
# Exit
|
||||
|
||||
mozinfo.find_and_update_from_json(dirs['abs_test_install_dir'])
|
||||
|
||||
cmd += ["--log-raw=-",
|
||||
"--log-raw=%s" % os.path.join(dirs["abs_blob_upload_dir"],
|
||||
"wpt_raw.log"),
|
||||
@ -192,7 +196,7 @@ class WebPlatformTest(TestingMixin, MercurialScript, CodeCoverageMixin):
|
||||
"--symbols-path=%s" % self.query_symbols_url(),
|
||||
"--stackwalk-binary=%s" % self.query_minidump_stackwalk(),
|
||||
"--stackfix-dir=%s" % os.path.join(dirs["abs_test_install_dir"], "bin"),
|
||||
"--run-by-dir=3",
|
||||
"--run-by-dir=%i" % (3 if not mozinfo.info["asan"] else 0),
|
||||
"--no-pause-after-test"]
|
||||
|
||||
if not sys.platform.startswith("linux"):
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
1
testing/web-platform/meta/2dcontext/shadows/__dir__.ini
Normal file
1
testing/web-platform/meta/2dcontext/shadows/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, PORT_Alloc_Util, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
1
testing/web-platform/meta/FileAPI/FileReader/__dir__.ini
Normal file
1
testing/web-platform/meta/FileAPI/FileReader/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, AllocateProtoAndIfaceCache, EntrySlotOrCreate, Init, MakeNotNull, MakeUnique, Malloc, NS_NewCStringInputStream, NewEmptyScopeData, NewPage, ProtoAndIfaceCache, _GetAddrInfo_Portable, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::BackgroundHangThread::ReportHang, mozilla::NonBlockingAsyncInputStream::AsyncWait, mozilla::NonBlockingAsyncInputStream::Create, mozilla::dom::Blob::Constructor, mozilla::dom::Blob::Create, mozilla::dom::FileReader::Constructor, mozilla::dom::StringBlobImpl::Create, mozilla::dom::WorkerPrivate::GetOrCreateGlobalScope, mozilla::dom::WorkerPrivate::WorkerPrivate, mozilla::dom::WorkerThread::Create, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost, nsThread::nsThread]
|
1
testing/web-platform/meta/FileAPI/file/__dir__.ini
Normal file
1
testing/web-platform/meta/FileAPI/file/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, NewEmptyScopeData, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::Performance::CreateForMainThread]
|
1
testing/web-platform/meta/IndexedDB/__dir__.ini
Normal file
1
testing/web-platform/meta/IndexedDB/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [PORT_Alloc_Util]
|
1
testing/web-platform/meta/__dir__.ini
Normal file
1
testing/web-platform/meta/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost, js_pod_malloc, js_pod_calloc, js_pod_realloc, js_arena_calloc,js_pod_arena_calloc, maybe_pod_calloc, pod_calloc, make_zeroed_pod_array, js_arena_malloc]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1,2 +1,2 @@
|
||||
disabled:
|
||||
if os == "win": https://bugzilla.mozilla.org/show_bug.cgi?id=1450635
|
||||
if os == "win": https://bugzilla.mozilla.org/show_bug.cgi?id=1450635
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/cookies/samesite/__dir__.ini
Normal file
1
testing/web-platform/meta/cookies/samesite/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/css/CSS2/selectors/__dir__.ini
Normal file
1
testing/web-platform/meta/css/CSS2/selectors/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1,3 +1,3 @@
|
||||
[mix-blend-mode-blended-element-overflow-hidden-and-border-radius.html]
|
||||
expected:
|
||||
expected:
|
||||
if os == "linux" and not webrender: FAIL
|
||||
|
@ -1,3 +1,3 @@
|
||||
[mix-blend-mode-intermediate-element-overflow-hidden-and-border-radius.html]
|
||||
expected:
|
||||
expected:
|
||||
if os == "linux" and not webrender: FAIL
|
||||
|
@ -1,3 +1,3 @@
|
||||
[mix-blend-mode-parent-with-border-radius.html]
|
||||
expected:
|
||||
expected:
|
||||
if os == "linux" and not webrender: FAIL
|
||||
|
@ -1,3 +0,0 @@
|
||||
[border-image-018.xht]
|
||||
expected:
|
||||
if debug and not webrender and e10s and (os == "linux") and (version == "Ubuntu 16.04") and (processor == "x86_64") and (bits == 64): FAIL
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1 +0,0 @@
|
||||
prefs: [dom.webcomponents.shadowdom.enabled:true]
|
1
testing/web-platform/meta/css/css-text/i18n/__dir__.ini
Normal file
1
testing/web-platform/meta/css/css-text/i18n/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1,2 +1 @@
|
||||
prefs: [dom.animations-api.core.enabled:true,
|
||||
layout.css.frames-timing.enabled:true]
|
||||
prefs: [dom.animations-api.core.enabled:true, layout.css.frames-timing.enabled:true]
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/css/css-variables/__dir__.ini
Normal file
1
testing/web-platform/meta/css/css-variables/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/css/cssom-view/__dir__.ini
Normal file
1
testing/web-platform/meta/css/cssom-view/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1,2 +1 @@
|
||||
prefs: [dom.webcomponents.shadowdom.enabled:true]
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
prefs: [dom.webcomponents.shadowdom.enabled:true]
|
1
testing/web-platform/meta/custom-elements/__dir__.ini
Normal file
1
testing/web-platform/meta/custom-elements/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [EntrySlotOrCreate, Malloc, NewEmptyScopeData, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::BackgroundHangThread::ReportHang]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [EntrySlotOrCreate, Malloc, NewEmptyScopeData, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::BackgroundHangThread::ReportHang]
|
@ -1 +1 @@
|
||||
prefs: [privacy.reduceTimerPrecision:false]
|
||||
prefs: [privacy.reduceTimerPrecision:false]
|
||||
|
1
testing/web-platform/meta/dom/nodes/__dir__.ini
Normal file
1
testing/web-platform/meta/dom/nodes/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/dom/ranges/__dir__.ini
Normal file
1
testing/web-platform/meta/dom/ranges/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/editing/run/__dir__.ini
Normal file
1
testing/web-platform/meta/editing/run/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/encrypted-media/__dir__.ini
Normal file
1
testing/web-platform/meta/encrypted-media/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, MakeUnique, Malloc, NewPage, Realloc, mozilla::EMEDecryptor::EMEDecryptor, mozilla::SchedulerGroup::CreateEventTargetFor, mozilla::dom::MediaKeys::CreateCDMProxy, mozilla::dom::nsIContentChild::GetConstructedEventTarget]
|
1
testing/web-platform/meta/feature-policy/__dir__.ini
Normal file
1
testing/web-platform/meta/feature-policy/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1,2 +1,2 @@
|
||||
prefs: [javascript.options.streams:true,
|
||||
dom.streams.enabled:true]
|
||||
prefs: [javascript.options.streams:true, dom.streams.enabled:true]
|
||||
lsan-allowed: [Alloc, AllocateProtoAndIfaceCache, NewEmptyScopeData, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::DOMException::Create, mozilla::dom::FetchStream::Create, mozilla::dom::Performance::CreateForMainThread]
|
||||
|
@ -1,2 +1,2 @@
|
||||
prefs: [javascript.options.streams:true,
|
||||
dom.streams.enabled:true]
|
||||
prefs: [javascript.options.streams:true, dom.streams.enabled:true]
|
||||
lsan-allowed: [mozilla::dom::FetchStream::Create, mozilla::dom::WorkerPrivate::WorkerPrivate, nsSegmentedBuffer::AppendNewSegment]
|
||||
|
1
testing/web-platform/meta/fetch/api/request/__dir__.ini
Normal file
1
testing/web-platform/meta/fetch/api/request/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, NewEmptyScopeData, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::Performance::CreateForMainThread]
|
@ -1,2 +1 @@
|
||||
prefs: [javascript.options.streams:true,
|
||||
dom.streams.enabled:true]
|
||||
prefs: [javascript.options.streams:true, dom.streams.enabled:true]
|
||||
|
1
testing/web-platform/meta/fetch/range/__dir__.ini
Normal file
1
testing/web-platform/meta/fetch/range/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, Create, CreateInner, FetchDriverObserver, Malloc, NewPage, PLDHashTable::Add, Realloc, allocate, mozilla::ThrottledEventQueue::Create, mozilla::dom::InternalRequest::GetRequestConstructorCopy, mozilla::dom::PerformanceStorageWorker::Create, mozilla::dom::PromiseWorkerProxy::Create, mozilla::dom::WorkerFetchResolver::Create, mozilla::dom::WorkerLoadInfo::InterfaceRequestor::InterfaceRequestor, nsSegmentedBuffer::AppendNewSegment, nsSupportsWeakReference::GetWeakReference]
|
1
testing/web-platform/meta/fetch/security/__dir__.ini
Normal file
1
testing/web-platform/meta/fetch/security/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
1
testing/web-platform/meta/geolocation-API/__dir__.ini
Normal file
1
testing/web-platform/meta/geolocation-API/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -1 +1 @@
|
||||
prefs: [privacy.reduceTimerPrecision:false]
|
||||
prefs: [privacy.reduceTimerPrecision:false]
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
1
testing/web-platform/meta/html/dom/__dir__.ini
Normal file
1
testing/web-platform/meta/html/dom/__dir__.ini
Normal file
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, _GetAddrInfo_Portable, mozilla::net::AddrInfo::AddrInfo, nsHostResolver::ResolveHost]
|
@ -1 +1 @@
|
||||
max-asserts: 3
|
||||
max-asserts: 3
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, XPCWrappedNative::GetNewOrUsed, js_new, mozilla::BasePrincipal::CreateCodebasePrincipal, mozilla::dom::ChromeUtils::GenerateQI, nsStringBuffer::Alloc]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Alloc, NewEmptyScopeData, js_new, js_pod_calloc, js_pod_malloc, js_pod_realloc, mozilla::dom::ChromeUtils::GenerateQI, mozilla::dom::Performance::CreateForMainThread]
|
@ -1 +1 @@
|
||||
max-asserts: 2
|
||||
max-asserts: 2
|
||||
|
@ -1,2 +1 @@
|
||||
max-asserts: 2
|
||||
|
||||
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
@ -0,0 +1 @@
|
||||
lsan-allowed: [Init, nsHostResolver::ResolveHost]
|
@ -0,0 +1 @@
|
||||
lsan-allowed: []
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user