MicroSEH 🔴


MicroSEH is a tiny library that implements Structured Exception Handling (SEH) in Rust and can catch and handle hardware exceptions.

Why?

Hardware exceptions are a very powerful tool for specific use cases. One such use case is to detect and handle illegal instructions at runtime.

Implementation

It turns out that implementing SEH in pure Rust has its own issues (as seen in this article from NAMAZSO)

This library uses a different, simpler approach, which is to use a C stub that calls back into Rust, wrapping the call in a __try __except block.

Usage

Add this to your Cargo.toml:

toml [dependencies] microseh = "0.2"

Minimal Example: Dereference a null pointer without crashing the program, and return the handled exception.

rust fn guarded() -> Result<(), Box<dyn Error>> { microseh::try_seh(|| unsafe { std::ptr::read_volatile::<i32>(0 as _); })?; }

Portability

SEH is a Microsoft extension to the C language, so it's only available on Windows with MSVC.