Bug 60121

Summary: build - libvdpau_softpipe fails at runtime.
Product: Mesa Reporter: Andy Furniss <adf.lists>
Component: OtherAssignee: mesa-dev
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: medium    
Version: git   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Andy Furniss 2013-01-31 14:37:03 UTC
I think this is related to the new build system but can't be sure.

Using VDPAU_DRIVER=r600 works fine but VDPAU_DRIVER=softpipe fails with -

libvdpau_softpipe.so: cannot open shared object file: No such file or directory

The lib is built and present, though.

-rwxr-xr-x 1 root root 1.8K Jan 31 13:01 libvdpau_softpipe.la
lrwxrwxrwx 1 root root   26 Jan 31 13:01 libvdpau_softpipe.so -> libvdpau_softpipe.so.1.0.0
lrwxrwxrwx 1 root root   26 Jan 31 13:01 libvdpau_softpipe.so.1 -> libvdpau_softpipe.so.1.0.0
-rwxr-xr-x 1 root root  27M Dec 19 23:28 libvdpau_softpipe.so.1.0
-rwxr-xr-x 1 root root  30M Jan 31 13:01 libvdpau_softpipe.so.1.0.0

As you can see due to the change of name I still have an old pre automake version of the driver. If I change the links to point to that the above command works.

Looking at old and new with ldd the only difference (apart from ../) is that the new lib has libdrm.so.2 whereas the old doesn't.

andy [ ~ ]$ ldd /usr/lib/vdpau/libvdpau_softpipe.so.1.0.0 | sort
        libc.so.6 => /lib/libc.so.6 (0x00007f7faa1f0000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007f7faab8a000)
        libdrm.so.2 => /usr/lib/../lib/libdrm.so.2 (0x00007f7fab1be000)
        libgcc_s.so.1 => /usr/lib/../lib/libgcc_s.so.1 (0x00007f7fa9fdb000)
        /lib/ld-linux-x86-64.so.2 (0x00007f7fadc49000)
        libm.so.6 => /lib/libm.so.6 (0x00007f7faa596000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007f7faad8f000)
        librt.so.1 => /lib/librt.so.1 (0x00007f7faafab000)
        libstdc++.so.6 => /usr/lib/../lib/libstdc++.so.6 (0x00007f7faa88c000)
        libvdpau.so.1 => /usr/lib/../lib/libvdpau.so.1 (0x00007f7fac343000)
        libX11.so.6 => /usr/lib/../lib/libX11.so.6 (0x00007f7fabbf6000)
        libX11-xcb.so.1 => /usr/lib/../lib/libX11-xcb.so.1 (0x00007f7fabf30000)
        libXau.so.6 => /usr/lib/../lib/libXau.so.6 (0x00007f7fab5d0000)
        libxcb-dri2.so.0 => /usr/lib/../lib/libxcb-dri2.so.0 (0x00007f7fab9f2000)
        libxcb.so.1 => /usr/lib/../lib/libxcb.so.1 (0x00007f7fab7d3000)
        libXdmcp.so.6 => /usr/lib/../lib/libXdmcp.so.6 (0x00007f7fab3cb000)
        libXext.so.6 => /usr/lib/../lib/libXext.so.6 (0x00007f7fac132000)
        linux-vdso.so.1 (0x00007fff4193f000)
andy [ ~ ]$ 
andy [ ~ ]$ 
andy [ ~ ]$ ldd /usr/lib/vdpau/libvdpau_softpipe.so.1.0 | sort
        libc.so.6 => /lib/libc.so.6 (0x00007fb749e68000)
        libdl.so.2 => /lib/libdl.so.2 (0x00007fb74b229000)
        libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007fb74a20d000)
        /lib/ld-linux-x86-64.so.2 (0x00007fb74cb33000)
        libm.so.6 => /lib/libm.so.6 (0x00007fb74a929000)
        libpthread.so.0 => /lib/libpthread.so.0 (0x00007fb74b42d000)
        librt.so.1 => /lib/librt.so.1 (0x00007fb74a721000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fb74a423000)
        libvdpau.so.1 => /usr/lib/libvdpau.so.1 (0x00007fb74b025000)
        libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fb74991c000)
        libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007fb74ae24000)
        libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fb7494fb000)
        libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007fb74ac20000)
        libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fb7496fe000)
        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fb7492f5000)
        libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fb749c57000)
        linux-vdso.so.1 (0x00007fff6d452000)
Comment 1 Matt Turner 2013-01-31 17:24:02 UTC
Try running under strace to see what's going wrong.
Comment 2 Andy Furniss 2013-01-31 23:16:25 UTC
(In reply to comment #1)
> Try running under strace to see what's going wrong.

Below is what happens - I don't know why - it opens /usr/lib/vdpau OK but then there are a bunch of fails and it ends up trying /lib and /usr/lib.

open("/usr/lib/vdpau/libvdpau_softpipe.so.1", O_RDONLY|O_CLOEXEC) = 6
read(6, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\200\350\32\0\0\0\0\0"..., 832) = 832
fstat(6, {st_mode=S_IFREG|0755, st_size=31041050, ...}) = 0
mmap(NULL, 24122432, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fc6e4b34000
mprotect(0x7fc6e5cef000, 2093056, PROT_NONE) = 0
mmap(0x7fc6e5eee000, 475136, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x11ba000) = 0x7fc6e5eee000
mmap(0x7fc6e5f62000, 2962496, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc6e5f62000
close(6)                                = 0
open("/usr/lib/../lib/tls/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/../lib/tls/x86_64", 0x7fff67a3fd10) = -1 ENOENT (No such file or directory)
open("/usr/lib/../lib/tls/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/../lib/tls", 0x7fff67a3fd10) = -1 ENOENT (No such file or directory)
open("/usr/lib/../lib/x86_64/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
stat("/usr/lib/../lib/x86_64", 0x7fff67a3fd10) = -1 ENOENT (No such file or directory)
open("/usr/lib/../lib/libstdc++.so.6", O_RDONLY|O_CLOEXEC) = 6
read(6, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\221\5\0\0\0\0\0"..., 832) = 832
fstat(6, {st_mode=S_IFREG|0755, st_size=5730036, ...}) = 0
mmap(NULL, 3134384, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fc6e4836000
mprotect(0x7fc6e4916000, 2093056, PROT_NONE) = 0
mmap(0x7fc6e4b15000, 40960, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0xdf000) = 0x7fc6e4b15000
mmap(0x7fc6e4b1f000, 82864, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7fc6e4b1f000
close(6)                                = 0
open("/usr/lib/../lib/libgcc_s.so.1", O_RDONLY|O_CLOEXEC) = 6
read(6, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\20(\0\0\0\0\0\0"..., 832) = 832
fstat(6, {st_mode=S_IFREG|0644, st_size=486560, ...}) = 0
mmap(NULL, 2182520, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 6, 0) = 0x7fc6e4621000
mprotect(0x7fc6e4636000, 2093056, PROT_NONE) = 0
mmap(0x7fc6e4835000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 6, 0x14000) = 0x7fc6e4835000
close(6)                                = 0
mprotect(0x7fc6e4b15000, 32768, PROT_READ) = 0
open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 6
fstat(6, {st_mode=S_IFREG|0644, st_size=43792, ...}) = 0
mmap(NULL, 43792, PROT_READ, MAP_PRIVATE, 6, 0) = 0x7fc6eda39000
close(6)                                = 0
open("/lib/libvdpau_softpipe.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/usr/lib/libvdpau_softpipe.so", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
munmap(0x7fc6eda39000, 43792)           = 0
write(2, "Failed to open VDPAU backend lib"..., 109Failed to open VDPAU backend libvdpau_softpipe.so: cannot open shared object file: No such file or directory
Comment 3 Andy Furniss 2013-03-04 14:32:46 UTC
fixed by e29124717eae4f8d329bb6a9707b802c0ff4bdd9

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.