{"record":{"id":"6f8095b1d9241802","repo":"wasmerio/wasmer","slug":"not-yet-implemented-6f8095","errorCode":null,"errorMessage":"not yet implemented","messagePattern":"not yet implemented","errorType":"panic","errorClass":null,"httpStatus":null,"severity":"error","filePath":"lib/vm/src/libcalls/eh/dwarf/eh.rs","lineNumber":290,"sourceCode":"                                        lpad,\n                                        tags: catches,\n                                    }\n                                });\n                            }\n\n                            action_record = action_record_reader\n                                .ptr\n                                .wrapping_add(next_action_record as usize);\n                        }\n                    }\n                }\n            }\n        }\n\n        // Ip is not present in the table. This indicates a nounwind call.\n        Ok(EHAction::Terminate)\n    } else {\n        todo!()\n    }\n}\n\n#[inline]\nfn round_up(unrounded: usize, align: usize) -> Result<usize, ()> {\n    if align.is_power_of_two() {\n        Ok(unrounded.next_multiple_of(align))\n    } else {\n        Err(())\n    }\n}\n\n/// Reads an offset (`usize`) from `reader` whose encoding is described by `encoding`.\n///\n/// `encoding` must be a [DWARF Exception Header Encoding as described by the LSB spec][LSB-dwarf-ext].\n/// In addition the upper (\"application\") part must be zero.\n///\n/// # Errors","sourceCodeStart":272,"sourceCodeEnd":308,"githubUrl":"https://github.com/wasmerio/wasmer/blob/8c4b9ee9d33fb2068863fbb3d328683e7e6ff7f5/lib/vm/src/libcalls/eh/dwarf/eh.rs#L272-L308","documentation":"find_eh_action in wasmer's DWARF-based exception handling implements the two-level call-site/landing-pad table walk only for the case where the instruction pointer IS found in the LSDA table; the `else` branch (Ip not found in the table structure being scanned) is `todo!()`, panicking instead of returning an EHAction. It represents an incomplete personality-routine-style scan for wasm exception handling.","triggerScenarios":"A wasm module using exception handling (tag/new exn/throw, legacy EH or exnref) whose unwinding path reaches find_eh_action with an Ip that falls in the branch not covered — i.e. unwinding a frame where the DWARF/LSDA lookup takes the else path.","commonSituations":"Running wasm with Wasm exception-handling proposals under the VM with the dwarf EH runtime; modules mixing nothrow (nounwind) calls with EH regions on the not-yet-implemented code path; enabling EH flags on a wasmer build where dwarf/eh is partial.","solutions":["Avoid enabling wasm exception handling on builds where lib/vm/src/libcalls/eh/dwarf/eh.rs still panics in this branch","Return EHAction::Terminate for the nounwind/unmatched case once semantics are confirmed, or implement the missing table-walk branch","Track/upgrade to a wasmer release completing the dwarf EH lookup","For library users: compile modules so throwing calls are explicitly covered by EH regions, avoiding the uncovered path"],"exampleFix":"// before\n} else {\n    todo!()\n}\n// after\n} else {\n    // Ip not found: call cannot unwind through this frame\n    Ok(EHAction::Terminate)\n}","handlingStrategy":"try-catch","validationCode":"// reject EH-using modules on builds with incomplete dwarf EH\nfn module_uses_exceptions(module: &Module) -> bool { module.imports().tags().count() > 0 }","typeGuard":"fn eh_supported(build: &str) -> bool { /* check version/feature */ build.contains(\"eh-complete\") }","tryCatchPattern":"match run_result {\n    Err(e) if is_todo_panic(&e) => disable_eh_or_fallback_to_sys_backend(),\n    other => other,\n}","preventionTips":["Compile wasm without exception handling when targeting wasmer builds with stub dwarf EH","Run EH workloads on the native sys backend until the dwarf path is complete","Keep EH proposal flags off by default in browser/embedder configs","Track upstream wasm exception-handling support before enabling it"],"tags":["exceptions","unwinding","dwarf","wasm"],"backgroundTag":"exception-handling-unimplemented","analyzedSha":"8c4b9ee9d33fb2068863fbb3d328683e7e6ff7f5","analyzedAt":"2026-09-01T23:06:31.009Z","contentChangedAt":null,"schemaVersion":2},"datasetVersion":"2026-09-09T06:17:21.866Z"}