1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/ */
/* 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"
);
}
);
});
}
|