Source code

Revision control

Copy as Markdown

Other Tools

Test Info: Errors

/* Any copyright is dedicated to the Public Domain.
/* global BrowserTestUtils, ok, gBrowser, add_task */
"use strict";
/**
* Checks that we set the CPUMicrocodeVersion annotation.
* This is a Windows-specific crash annotation.
*/
if (AppConstants.platform == "win") {
add_task(async function test_cpu_microcode_version_annotation() {
await BrowserTestUtils.withNewTab(
{
gBrowser,
},
async function (browser) {
// Crash the tab
let annotations = await BrowserTestUtils.crashFrame(browser);
ok(
"CPUMicrocodeVersion" in annotations,
"contains CPU microcode version"
);
}
);
});
}
/**
* Checks that Linux sandbox violations are reported as SIGSYS crashes with
* the syscall number provided in the address field of the minidump's exception
* stream.
*/
if (AppConstants.platform == "linux") {
add_task(async function test_sandbox_violation_is_sigsys() {
await BrowserTestUtils.withNewTab(
{
gBrowser,
},
async function (browser) {
// Crash the tab
let annotations = await BrowserTestUtils.crashFrame(
browser,
true,
true,
/* Default browsing context */ null,
{ crashType: "CRASH_SYSCALL" }
);
Assert.equal(
annotations.StackTraces.crash_info.type,
"SIGSYS",
"The crash type is SIGSYS"
);
function chroot_syscall_number() {
// We crash by calling chroot(), see BrowserTestUtilsChild.sys.mjs
switch (Services.sysinfo.get("arch")) {
case "x86-64":
return "0xa1";
case "aarch64":
return "0x33";
default:
return "0x3d";
}
}
Assert.equal(
annotations.StackTraces.crash_info.address,
chroot_syscall_number(),
"The address corresponds to the chroot() syscall number"
);
}
);
});
}