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