{"record":{"id":"19932628645fddad","repo":"windmill-labs/windmill","slug":"oh-no-199326","errorCode":null,"errorMessage":"oh no","messagePattern":"oh no","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"backend/parsers/windmill-parser-r/src/wasm_libc.rs","lineNumber":292,"sourceCode":"    _args: ...\n) -> c_int {\n    panic!(\"vsnprintf is not supported\");\n}\n\n#[no_mangle]\npub extern \"C\" fn clock_gettime(ptr: usize, new_size: usize) {\n    panic!(\"clock_gettime is not supported\");\n}\n\n// int snprintf( char* restrict buffer, size_t bufsz, const char* restrict format, ... );\n#[no_mangle]\npub extern \"C\" fn snprintf() {\n    panic!(\"snprintf is not supported\");\n}\n\n#[no_mangle]\npub extern \"C\" fn __assert_fail(_: *const i32, _: *const i32, _: *const i32, _: *const i32) {\n    panic!(\"oh no\");\n}\n","sourceCodeStart":274,"sourceCodeEnd":294,"githubUrl":"https://github.com/windmill-labs/windmill/blob/e474e8803ce2ff5c2df09a58dab51d45f5c922ca/backend/parsers/windmill-parser-r/src/wasm_libc.rs#L274-L294","documentation":"__assert_fail is the C runtime hook invoked when a C assert() fails; in the R parser WASM shim it panics with the message 'oh no' (wasm_libc.rs:292). Unlike the other stubs, reaching this means the compiled parser's internal invariant checks actually failed — the WASM code asserted something impossible and aborted. This signals a bug or corrupt input to the parser, not merely an unsupported feature.","triggerScenarios":"A C-level assert() inside the compiled R parser (or bundled C code) evaluates false at runtime; e.g. malformed/edge-case R source makes the parser's internal state violate an invariant.","commonSituations":"Parsing unusual or adversarial R snippets that break parser assumptions; a parser/library version regression; memory corruption within the WASM linear memory triggering an assertion.","solutions":["Isolate the exact R snippet that triggers the assertion and check whether it parses on a released Windmill version","Upgrade or downgrade the windmill-parser-r / bundled parser to a version where the assert does not fire","Sanitize the input (strip the offending construct) before passing it to the parser","Report the failing input upstream — this is an internal invariant violation in the parser, not user-fixable config"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Validate/normalize R source before parsing:\nif (typeof rSource !== 'string' || rSource.trim() === '') {\n  throw new TypeError('rSource must be a non-empty string');\n}","typeGuard":"function isAssertFailure(e) {\n  return e instanceof Error && e.message === 'oh no';\n}","tryCatchPattern":"try {\n  const ast = rParser.parse(rSource);\n} catch (e) {\n  if (isAssertFailure(e)) {\n    reportUpstream(rSource, e.wasmBacktrace); // internal invariant bug — capture input\n    return null;\n  }\n  throw e;\n}","preventionTips":["Treat this as a parser bug: record the exact input and report it upstream","Fuzz your R corpus against the parser version before deploying it","Never retry the same input — the assertion failure is deterministic","Keep the parser build updated; assertion failures are usually fixed in later releases"],"tags":["wasm","rust","assertion","parser"],"backgroundTag":"c-assertion-failure","analyzedSha":"e474e8803ce2ff5c2df09a58dab51d45f5c922ca","analyzedAt":"2026-09-03T12:38:19.024Z","contentChangedAt":"2026-09-03T12:38:19.024Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}