Skip to main content

## resolve

# Function resolve

Source

    unsafe fn resolve(name: &str) -> *mut c_void

Expand description

Resolve a GL symbol the way libepoxy actually exports it.

This is the trap that cost the spike a debugging cycle. libepoxy does not export `glFoo` as a function. It exports `epoxy_glFoo` as a data symbol holding a lazily-resolving function pointer. So the address `dlsym` returns is the address of the pointer, not of any code: returning it makes mpv jump into non-executable data and take SIGSEGV/SEGV_ACCERR on the very first GL call. The value must be read out of that location.

The `epoxy` crate does this correctly and is unusable here — its `gl_generator` dependency pulls a yanked `xml-rs`.

TRACES: UR-080 | IR-033