NVIDIA / egl-wayland

The EGLStream-based Wayland external platform
MIT License
275 stars 43 forks source link

Symbol lookup error: wlEglCreateSurfaceExport #80

Closed kyle-figure closed 1 year ago

kyle-figure commented 1 year ago

I get the following error message trying to launch an app: symbol lookup error: /lib/x86_64-linux-gnu/libnvidia-vulkan-producer.so: undefined symbol: wlEglCreateSurfaceExport

I saw the following very similar issue, but the symbol is different and my version is much newer: https://github.com/NVIDIA/egl-wayland/issues/56

I am using NVIDIA Driver Version: 525.105.17 Ubuntu 22.04.2 LTS

$ nvidia-container-runtime --version
NVIDIA Container Runtime version 1.13.0
commit: b7079454b5b8fed1390ce78ca5a3343748f62657
spec: 1.0.2-dev

runc version 1.1.5
commit: v1.1.5-0-gf19387a
spec: 1.0.2-dev
go: go1.19.7
libseccomp: 2.5.3

I'm slightly confused because the symbol does appear to exist in the binary.

$ nm -gD /lib/x86_64-linux-gnu/libnvidia-vulkan-producer.so | grep -i egl
                 U eglDestroySurface
                 U eglGetPlatformDisplay
                 U eglInitialize
                 U eglTerminate
                 U NvEglApiGetAccess
                 U wlEglCreateSurfaceExport
                 U wlEglGetSurfaceStreamExport
                 U wlEglPostPresentExport
                 U wlEglPrePresentExport

Any ideas on what I can do to resolve this?

thecoder08 commented 1 year ago

I also have this issue. Driver version 525.105.17. Pop OS 22.04 LTS. Like @kyle-figure the symbol is defined in the library.

erik-kz commented 1 year ago

U wlEglCreateSurfaceExport

The "U" means that the symbol is undefined, libnvidia-egl-wayland.so is the library that's supposed to provide it.

Which version of egl-wayland do you have installed?

thecoder08 commented 1 year ago

Which version of egl-wayland do you have installed?

I have libnvidia-egl-wayland1 version 1.1.9 installed. It is the latest version available for Ubuntu (and Pop OS) 22.04 LTS.

thecoder08 commented 1 year ago

Looking now I realize the function was added in version 1.1.10, and the latest version is 1.1.11. I guess the version available in the repositories is outdated.

E: Looking back at the issue that OP originally mentioned, I can see that wlEglInitializeSurfaceExport was renamed to wlEglCreateSurfaceExport. In my version of libnvidia-egl-wayland, it is still called wlEglInitializeSurfaceExport. This confirms that an outdated library is the issue.

kyle-figure commented 1 year ago

Everything @thecoder08 mentioned is accurate. After building egl-wayland 1.1.11 from source, the unresolved symbol is no longer an issue. Thanks for the assistance.