
It's still possible to read the TSC via the read_tsc() syscall, but we will now clear some of the bottom bits for unprivileged users.
1.5 KiB
1.5 KiB
Name
crash - intentionally perform an illegal operation
Synopsis
$ crash [options]
Description
This program is used to test how the Serenity kernel handles userspace crashes, and can be used to simulate many different kinds of crashes.
Options
-A
: Test that all of the following crashes crash as intended.-s
: Perform a segmentation violation by dereferencing an invalid pointer.-d
: Perform a division by zero.-i
: Execute an illegal CPU instruction.-a
: Callabort()
.-m
: Read a pointer from uninitialized memory, then read from it.-f
: Read a pointer from memory freed usingfree()
, then read from it.-M
: Read a pointer from uninitialized memory, then write to it.-F
: Read a pointer from memory freed usingfree()
, then write to it.-r
: Write to read-only memory.-T
: Make a syscall while using an invalid stack pointer.-t
: Trigger a page fault while using an invalid stack pointer.-S
: Make a syscall from writeable memory.-x
: Read from recently freed memory. (Tests an opportunistic malloc guard.)-y
: Write to recently freed memory. (Tests an opportunistic malloc guard.)-X
: Attempt to execute non-executable memory. (Not mapped with PROT_EXEC.)-U
: Attempt to trigger an x86 User Mode Instruction Prevention fault.-I
: Use an x86 I/O instruction in userspace.-c
: Read the x86 TSC (Time Stamp Counter) directly.
Examples
$ crash -F
Testing: "Write to freed memory"
Shell: crash(33) exitied due to signal "Segmentation violation"