CRASHME(1)
π₯ CRASHME(1) β bestie edition π₯
okay so picture this: it's the General Commands Manual, the vibe is chaotic, and the star of the show is a lil program called crashme. buckle up π
β¨ NAME β¨
crashme β test operating environment software robustness π
πΈ SYNOPSIS πΈ
crashme [NBYTES] [SRAND] [NTRYS] [NSUB] [VERBOSE]
π¦ DESCRIPTION π¦
crashme is, and I cannot stress this enough, a very simple program that tests the operating environment's robustness by invoking random data as if it were a procedure. yes bestie, it literally justβ¦ executes garbage and sees what happens. main character energy fr fr π
The standard signals are caught and handled with a setjmp back to a loop which will try again to produce a fault by executing random data. Some people call this stress testing. i call it sending your CPU to the club with no supervision πͺ©
π COMMAND LINE OPTIONS π
[NBYTES]β should be an integer, specifying the size of the random data string in bytes. and here's where it gets spicy:- if given negative, then the bytes are printed instead of being executed π¨οΈ (no chaos, just vibes)
- if given with an explicit plus sign, then the storage for the bytes is freshly
malloc'ed each time. this can have an effect on machines with separate I and D cache mechanisms, iykyk π§ - the argument can also have a dot in it,
X.Y, in which caseYis a increment for a pointer into the random data. The buffer is recalculated only when the pointer gets near the end of the data.
The are two magic values for [NBYTES] β¨:
- a value of
81920avoidsmallocand returns a pointer to static data. This makes the operation ofcrashmemore repeatable on architectures wheremallocis designed to return unpredictable locations. - a value of
1025avoids a call that sets the protection of the data toREAD+WRITE+EXEC.
[SRAND]β the input seed to the random number generator, passed tosrandπ²[NTRIES]β how many times to loop before exiting normally from the program π[NSUB]β optional! the number ofvforksubprocesses running all at once π―- if negative, run one after another.
- if given as a time
hrs:mns:scs(hours, minutes, seconds) then one subprocess will be run to completion, followed by another, until the time limit has been reached β° - if this argument is given as the empty string or
.then it is ignored.
When in sequential-subprocess mode there is a 30 second time limit on each subprocess. This is to allow the instruction-set-space random walk to continue when a process bashes itself into an infinite loop. For example, the ntrys can be bashed to a very large number with nbytes bashed to zero. (10 second limit on Windows NT πͺ).
The SRAND argument is incremented by one for each subprocess.
[VERBOSE]β optional.0is the least verbose,5the most π£οΈ
π ENVIRONMENT VARIABLES π
CRASHLOGβ the name of the file which the parent process opens in write mode and all child processes open in append mode. There is frequent flushing of the file but no locking, so the output may be interleaved π. If the operating system crashes then this file might provide a short-cut to a more resent random number seed sequence to allow for quicker finding of the special case that caused the crash. lowkey a detective notebook πCRASHPRNGβ can be set to:RANDto use the system-providedrandfunction,MTto use the Mersenne twister (default) as coded by Takuji Nishimura and Makoto Matsumoto,- or
VNSQto use the author's kludge interpretation of Von Neumann's middle-square method. periodt π
π EXAMPLE π
This is a suggested test, to run it for a least an hour.
crashme +2000 666 100 1:00:00
likeβ¦ go get a snack, this one's a marathon bestie πβοΈπ¨
π§ FILES π§
crashme.c
π₯ DIAGNOSTICS π₯
When a signal is caught the number and nature of the signal is indicated. Setting the environment variable CRASHLOG will cause each subprocess to record the arguments it was given. receipts = kept π
π BUGS π
- Not all signals are caught, and the state of the user program/process environment can be sufficiently damaged such that the program terminates before going through all
[NTRIES]operations. yeah. it can justβ¦ die mid-vibe. π - If the architecture uses some kind of procedure descriptor but no special code has been not been added to
castaway()incrashme.cthen the stress test will not be as potent as it would otherwise be.
Beware: This program can crash your computer if the operating system or hardware of same is buggy. User data may be lost. no cap. this is not a drill. back up ur stuff first, bestie π¨πΎ
π AUTHOR π
George J Carrette. GJC@alum.mit.edu
http://people.delphiforums.com/gjc/crashme.html
β VERSION β
2.8.5 6-AUG-2014
and that's the whole page bestie π«Ά this was crashme, section 1 of the General Commands Manual, version 2.8.5 dated 6-AUG-2014 β go forth and stress test responsibly, mwah πβ¨
π¦ where this page comes from
- debian bookworm: crashme 2.8.5-1+b2 Β· crashme
- debian trixie: crashme 2.8.5-2 Β· crashme
- ubuntu jammy: crashme 2.8.5-1build1 Β· crashme
- ubuntu noble: crashme 2.8.5-1build1 Β· crashme
- ubuntu questing: crashme 2.8.5-4
- ubuntu resolute: crashme 2.8.5-4build1 Β· crashme
- ubuntu stonking: crashme 2.8.5-4build1 Β· crashme
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms