Add a way to voluntarily crash on stack overflow in CI

This commit is contained in:
Jarred Sumner
2025-07-30 20:56:15 -07:00
parent 2b5a59cae1
commit c3f02df42f
4 changed files with 15 additions and 0 deletions

View File

@@ -1040,6 +1040,7 @@ async function spawnBun(execPath, { args, cwd, timeout, env, stdout, stderr }) {
SHELL: shellPath,
FORCE_COLOR: "1",
BUN_FEATURE_FLAG_INTERNAL_FOR_TESTING: "1",
BUN_FEATURE_FLAG_CRASH_ON_STACK_OVERFLOW: "1",
BUN_DEBUG_QUIET_LOGS: "1",
BUN_GARBAGE_COLLECTOR_LEVEL: "1",
BUN_JSC_randomIntegrityAuditRate: "1.0",

View File

@@ -4,6 +4,12 @@ pub const JSGlobalObject = opaque {
}
extern fn JSGlobalObject__throwStackOverflow(this: *JSGlobalObject) void;
pub fn throwStackOverflow(this: *JSGlobalObject) void {
if (comptime bun.Environment.is_canary) {
if (bun.getRuntimeFeatureFlag(.BUN_FEATURE_FLAG_CRASH_ON_STACK_OVERFLOW)) {
@panic("Stack overflow");
}
}
JSGlobalObject__throwStackOverflow(this);
}
extern fn JSGlobalObject__throwOutOfMemoryError(this: *JSGlobalObject) void;

View File

@@ -3730,6 +3730,12 @@ pub const StackCheck = struct {
// Workaround for lack of branch hints.
pub noinline fn throwStackOverflow() StackOverflow!void {
@branchHint(.cold);
if (comptime bun.Environment.is_canary) {
if (bun.getRuntimeFeatureFlag(.BUN_FEATURE_FLAG_CRASH_ON_STACK_OVERFLOW)) {
@panic("Stack overflow");
}
}
return error.StackOverflow;
}
const StackOverflow = error{StackOverflow};

View File

@@ -40,6 +40,8 @@ pub const RuntimeFeatureFlag = enum {
BUN_NO_CODESIGN_MACHO_BINARY,
BUN_TRACE,
NODE_NO_WARNINGS,
BUN_FEATURE_FLAG_CRASH_ON_STACK_OVERFLOW,
};
/// Enable breaking changes for the next major release of Bun