Backed out 4 changesets (bug 1589493) for chrome failures at dom/ipc/tests/test_process_error_oom.xu on a CLOSED TREE

Backed out changeset 9b97128e83d8 (bug 1589493)
Backed out changeset d2ed39839f83 (bug 1589493)
Backed out changeset cac468582924 (bug 1589493)
Backed out changeset 421b8d600806 (bug 1589493)
This commit is contained in:
Coroiu Cristina 2019-11-28 18:01:54 +02:00
Родитель 172641d0de
Коммит 8aab818cb9
8 изменённых файлов: 8 добавлений и 106 удалений

Просмотреть файл

@ -1695,10 +1695,6 @@ void ContentParent::ActorDestroy(ActorDestroyReason why) {
dumpID = mCrashReporter->MinidumpID();
}
props->SetPropertyAsAString(NS_LITERAL_STRING("dumpID"), dumpID);
// Propagate `isLikelyOOM`.
Unused << props->SetPropertyAsBool(NS_LITERAL_STRING("isLikelyOOM"),
mCrashReporter->IsLikelyOOM());
} else {
CrashReporter::FinalizeOrphanedMinidump(OtherPid(),
GeckoProcessType_Content);

Просмотреть файл

@ -5,6 +5,3 @@ support-files =
[test_process_error.xhtml]
skip-if = !crashreporter || (webrender && os == 'linux' && bits == 64 && debug) # bug 1544147
[test_process_error_oom.xul]
skip-if = !crashreporter || (webrender && os == 'linux' && bits == 64 && debug) # bug 1544147

Просмотреть файл

@ -14,10 +14,6 @@
const done = window.arguments[0].done;
const SimpleTest = window.arguments[0].SimpleTest;
// Parse test options.
const url = new URL(document.location);
const crashType = url.searchParams.get("crashType");
// Allow the browser to get connected before using the messageManager to cause
// a crash:
addEventListener("DOMContentLoaded", () => {
@ -33,10 +29,6 @@
if ('nsICrashReporter' in Ci) {
dumpID = subject.getPropertyAsAString('dumpID');
ok(dumpID, "dumpID is present and not an empty string");
// Let's check whether we have correctly reported OOM.
var isLikelyOOM = subject.getPropertyAsBool('isLikelyOOM');
is(isLikelyOOM, crashType == 'CRASH_OOM', 'isLikelyOOM is correct');
}
Services.obs.removeObserver(crashObserver, 'ipc:content-shutdown');
@ -54,7 +46,7 @@
"Expected the right browsing context id on the oop-browser-crashed event.");
})
BrowserTestUtils.crashFrame(browser, true, false, /* Default browsing context */ null, { crashType });
BrowserTestUtils.crashFrame(browser, true, false);
Promise.all([observerPromise, eventPromise]).then(done);
});

Просмотреть файл

@ -1,22 +0,0 @@
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css" type="text/css"?>
<window xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
<script>
SimpleTest.waitForExplicitFinish();
SimpleTest.expectChildProcessCrash();
var w = docShell.rootTreeItem.domWindow.openDialog('process_error.xul?crashType=CRASH_OOM', '_blank', 'chrome,resizable=yes,width=400,height=600', window);
function done()
{
w.close();
SimpleTest.finish();
}
</script>
<body xmlns="http://www.w3.org/1999/xhtml" style="height: 300px; overflow: auto;" />
</window>

Просмотреть файл

@ -8,7 +8,6 @@
#include "CrashReporterMetadataShmem.h"
#include "mozilla/dom/Promise.h"
#include "mozilla/recordreplay/ParentIPC.h"
#include "mozilla/EnumeratedRange.h"
#include "mozilla/Sprintf.h"
#include "mozilla/SyncRunnable.h"
#include "mozilla/Telemetry.h"
@ -229,21 +228,5 @@ void CrashReporterHost::AddAnnotation(CrashReporter::Annotation aKey,
mExtraAnnotations[aKey] = aValue;
}
bool CrashReporterHost::IsLikelyOOM() {
// The data is only populated during the call to `FinalizeCrashReport()`.
MOZ_ASSERT(mFinalized);
if (mExtraAnnotations[CrashReporter::Annotation::OOMAllocationSize].Length() >
0) {
// If `OOMAllocationSize` was set, we know that the crash happened
// because an allocation failed (`malloc` returned `nullptr`).
//
// As Unix systems generally allow `malloc` to return a non-null value
// even when no virtual memory is available, this doesn't cover all
// cases of OOM under Unix (far from it).
return true;
}
return false;
}
} // namespace ipc
} // namespace mozilla

Просмотреть файл

@ -94,14 +94,6 @@ class CrashReporterHost {
return mExtraAnnotations[CrashReporter::Annotation::additional_minidumps];
}
// Return `true` if this crash reporter has been identified as a likely OOM.
//
// At the time of this writing, OOMs detection is considered reliable under
// Windows but other platforms quite often return false negatives.
//
// `CrashReporterHost::FinalizeCrashReport()` MUST have been called already.
bool IsLikelyOOM();
private:
static void AsyncAddCrash(int32_t aProcessType, int32_t aCrashType,
const nsString& aChildDumpID);

Просмотреть файл

@ -1629,10 +1629,6 @@ var BrowserTestUtils = {
* @param (BrowsingContext) browsingContext
* The context where the frame leaves. Default to
* top level context if not supplied.
* @param (object?) options
* An object with any of the following fields:
* crashType: "CRASH_INVALID_POINTER_DEREF" | "CRASH_OOM"
* The type of crash. If unspecified, default to "CRASH_INVALID_POINTER_DEREF"
*
* @returns (Promise)
* @resolves An Object with key-value pairs representing the data from the
@ -1642,8 +1638,7 @@ var BrowserTestUtils = {
browser,
shouldShowTabCrashPage = true,
shouldClearMinidumps = true,
browsingContext,
options = {}
browsingContext
) {
let extra = {};
let KeyValueParser = {};
@ -1781,9 +1776,7 @@ var BrowserTestUtils = {
this.sendAsyncMessage(
browsingContext || browser.browsingContext,
"BrowserTestUtils:CrashFrame",
{
crashType: options.crashType || "",
}
{}
);
await Promise.all(expectedPromises);

Просмотреть файл

@ -210,8 +210,8 @@ class BrowserTestUtilsChild extends JSWindowActorChild {
case "BrowserTestUtils:CrashFrame": {
// This is to intentionally crash the frame.
// We crash by using js-ctypes. The crash
// should happen immediately
// We crash by using js-ctypes and dereferencing
// a bad pointer. The crash should happen immediately
// upon loading this frame script.
const { ctypes } = ChromeUtils.import(
@ -220,38 +220,9 @@ class BrowserTestUtilsChild extends JSWindowActorChild {
let dies = function() {
ChromeUtils.privateNoteIntentionalCrash();
switch (aMessage.data.crashType) {
case "CRASH_OOM": {
// Allocate waaaaaay too much memory to encourage the system
// to crash with an OOM.
const OS = ChromeUtils.import(
"resource://gre/modules/osfile/osfile_shared_allthreads.jsm"
);
let libxul = ctypes.open(OS.Constants.Path.libxul);
let moz_xmalloc = libxul.declare(
"moz_xmalloc",
ctypes.default_abi,
/* return type */ ctypes.voidptr_t,
/* size */ ctypes.size_t
);
let max_value = ctypes.cast(ctypes.ssize_t(-1), ctypes.size_t);
moz_xmalloc(max_value);
moz_xmalloc(max_value);
moz_xmalloc(max_value);
break;
}
case "CRASH_INVALID_POINTER_DEREF": // Fallthrough
default: {
// Dereference a bad pointer.
let zero = new ctypes.intptr_t(8);
let badptr = ctypes.cast(
zero,
ctypes.PointerType(ctypes.int32_t)
);
badptr.contents;
}
}
let zero = new ctypes.intptr_t(8);
let badptr = ctypes.cast(zero, ctypes.PointerType(ctypes.int32_t));
badptr.contents;
};
dump("\nEt tu, Brute?\n");