zed/nix/livekit-libwebrtc/libwebrtc.version
Jakub Konka 0c43ce8847
nix: Hide pipewire lazy trampolines in libwebrtc when linking as SO (#50743)
This would cause a null pointer dereference when trying to open an audio
device in Zed. More context:
https://github.com/NixOS/nixpkgs/pull/478907/changes#r2885943326

cc @cameron1024 

Release Notes:

- Fixed crash when trying to join a channel/test audio on Nix-built Zed
on Linux.
2026-03-04 23:14:06 +01:00

22 lines
768 B
Text

/* Linker version script for libwebrtc.so (Linux only).
*
* When libwebrtc.so is built with rtc_use_pipewire=true and
* -fvisibility=default, PipeWire lazy-load trampoline stubs (pw_*, spa_*)
* are exported as weak symbols. If the PipeWire ALSA plugin
* (libasound_module_pcm_pipewire.so) is later dlopen'd by libasound,
* the dynamic linker may resolve the plugin's pw_* references through
* libwebrtc.so's broken trampolines instead of the real libpipewire.so,
* causing a SIGSEGV (NULL function pointer dereference).
*
* This script hides only those third-party symbol namespaces while
* keeping every WebRTC / BoringSSL / internal symbol exported (which
* the Rust webrtc-sys bindings require).
*/
{
global:
*;
local:
pw_*;
spa_*;
};