windmill-labs/windmill · error

oh no

Error message

oh no

What it means

`__assert_fail` is the libc function invoked when a C `assert()` fails. In the WASM Ruby parser it is stubbed to panic with the message "oh no", meaning a C-level assertion inside the VM or a linked native extension has failed. Unlike the other stubs this indicates a genuine assertion failure, not merely an unimplemented API.

Source

Thrown at backend/parsers/windmill-parser-ruby/src/wasm_libc.rs:292

    _args: ...
) -> c_int {
    panic!("vsnprintf is not supported");
}

#[no_mangle]
pub extern "C" fn clock_gettime(ptr: usize, new_size: usize) {
    panic!("clock_gettime is not supported");
}

// int snprintf( char* restrict buffer, size_t bufsz, const char* restrict format, ... );
#[no_mangle]
pub extern "C" fn snprintf() {
    panic!("snprintf is not supported");
}

#[no_mangle]
pub extern "C" fn __assert_fail(_: *const i32, _: *const i32, _: *const i32, _: *const i32) {
    panic!("oh no");
}

View on GitHub (pinned to e474e8803c)

Solutions

  1. Identify which native extension/gem is asserting and fix or remove the offending input
  2. Simplify the Ruby code being parsed to avoid the asserted path
  3. Upgrade the gem/VM; the assertion indicates a violated precondition in native code
Defensive patterns

Strategy: try-catch

Try / catch

match std::panic::catch_unwind(|| parse_ruby(source)) {
    Ok(res) => res,
    Err(e) => {
        // 'oh no' = a native assert() failed inside the VM; report the offending script/gem
        report_native_assertion(source, e);
        Err("native assertion failure in ruby parser sandbox".into())
    }
}

Prevention

When it happens

Trigger: A C assertion fails inside code running in the wasm Ruby VM, routing to the exported `__assert_fail` shim.

Common situations: Buggy or misused C-extension gem asserting on invalid input while the parser executes; VM internals asserting invariants under unusual scripts.

Related errors


AI-assisted analysis of windmill-labs/windmill@e474e8803c (2026-09-03). Data as JSON: /api/errors/99578b424af94fc2. Report an issue: GitHub.