Re: dvdrip problem
Hendrik Tews wrote:
>Hi,
>
>when I start dvdrip it tells me that the mandatory tools
>transcode and ImageMagick are missing. However, I have
>
> ii dvdrip 0.52.5-0.0 perl front end for transcode
> ii transcode 0.6.14-0.5 Utility to encode raw video/audio streams
> ii imagemagick 6.0.6.2-2.4 Image manipulation programs
>
>On stderr I see
>
> sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory
>
>Is this a known problem? Are there any solytions?
>
>I have a mixed installation (with APT::Default-Release
>"testing";). So maybe the error is caused by incompatible
>packages from testing and unstable. I append my sources.list
>below. I also append all the relevant package versions.
>
>Bye,
>
>Hendrik
>
>
I'm having exactly the same problem here. It works in the 32bit sarge,
but impossible to have it work in the 64bit main.
I tried some basic debugging but I'm not a perl guru. It looks like for
some reason the run-time linker doesn't want to load the base shared
libraries: running with strace -f shows the following.
6072 execve("/usr/X11R6/bin/dvdrecord", ["dvdrecord", "-version"], [/*
27 vars */]) = -1 ENOENT (No such file or directory)
6072 execve("/usr/local/bin/dvdrecord", ["dvdrecord", "-version"], [/*
27 vars */]) = -1 ENOENT (No such file or directory)
6072 execve("/usr/bin/dvdrecord", ["dvdrecord", "-version"], [/* 27
vars */] <unfinished ...>
6071 <... read resumed> "", 4) = 0
6071 close(7) = 0
6071 fcntl(5, F_GETFL) = 0 (flags O_RDONLY)
6071 fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
6071 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aaaabc99000
6071 lseek(5, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
6071 fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
6071 read(5, <unfinished ...>
6072 <... execve resumed> ) = 0
6072 uname({sys="Linux", node="piman", ...}) = 0
6072 brk(0) = 0x541000
6072 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aaaaaabf000
6072 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6072 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
6072 open("/etc/ld.so.cache", O_RDONLY) = 3
6072 fstat(3, {st_mode=S_IFREG|0644, st_size=174616, ...}) = 0
6072 mmap(NULL, 174616, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaac0000
6072 close(3) = 0
6072 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6072 open("/lib/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such
file or directory)
6072 stat("/lib/tls/x86_64", 0x7ffffffff160) = -1 ENOENT (No such file
or directory)
6072 open("/lib/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
directory)
6072 stat("/lib/tls", 0x7ffffffff160) = -1 ENOENT (No such file or
directory)
6072 open("/lib/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
6072 stat("/lib/x86_64", 0x7ffffffff160) = -1 ENOENT (No such file or
directory)
6072 open("/lib/libc.so.6", O_RDONLY) = 3
6072 read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\324"..., 640) = 640
6072 close(3) = 0
6072 stat("/lib", {st_mode=S_IFDIR|0755, st_size=4376, ...}) = 0
6072 open("/usr/lib/tls/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No
such file or directory)
6072 stat("/usr/lib/tls/x86_64", 0x7ffffffff160) = -1 ENOENT (No such
file or directory)
6072 open("/usr/lib/tls/libc.so.6", O_RDONLY) = -1 ENOENT (No such file
or directory)
6072 stat("/usr/lib/tls", {st_mode=S_IFDIR|0755, st_size=136, ...}) = 0
6072 open("/usr/lib/x86_64/libc.so.6", O_RDONLY) = -1 ENOENT (No such
file or directory)
6072 stat("/usr/lib/x86_64", 0x7ffffffff160) = -1 ENOENT (No such file
or directory)
6072 open("/usr/lib/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or
directory)
6072 stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=84064, ...}) = 0
6072 writev(2, [{"dvdrecord", 9}, {": ", 2}, {"error while loading
shared libra"..., 36}, {": ", 2}, {"libc.so.6", 9}, {": ", 2}, {"cannot
open shared object file", 30}, {": ", 2}, {"No such file or directory",
25}, {"\n", 1}], 10 <unfinished ...>
6071 <... read resumed> "dvdrecord: error while loading s"..., 8192) = 118
6071 read(5, <unfinished ...>
6072 <... writev resumed> ) = 118
6072 exit_group(127) = ?
6071 <... read resumed> "", 4096) = 0
[...]
6073 execve("/usr/X11R6/bin/cdrecord", ["cdrecord", "-version"], [/* 27
vars */]) = -1 ENOENT (No such file or directory)
6073 execve("/usr/local/bin/cdrecord", ["cdrecord", "-version"], [/* 27
vars */]) = -1 ENOENT (No such file or directory)
6073 execve("/usr/bin/cdrecord", ["cdrecord", "-version"], [/* 27 vars
*/] <unfinished ...>
6071 <... read resumed> "", 4) = 0
6071 close(7) = 0
6071 fcntl(5, F_GETFL) = 0 (flags O_RDONLY)
6071 fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
6071 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aaaabc99000
6071 lseek(5, 0, SEEK_CUR) = -1 ESPIPE (Illegal seek)
6071 fstat(5, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
6071 read(5, <unfinished ...>
6073 <... execve resumed> ) = 0
6073 uname({sys="Linux", node="piman", ...}) = 0
6073 brk(0) = 0x5c2000
6073 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aaaaaabf000
6073 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6073 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
6073 open("/etc/ld.so.cache", O_RDONLY) = 3
6073 fstat(3, {st_mode=S_IFREG|0644, st_size=174616, ...}) = 0
6073 mmap(NULL, 174616, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaac0000
6073 close(3) = 0
6073 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6073 open("/lib/libncurses.so.5", O_RDONLY) = 3
6073 read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\300\371"..., 640) = 640
6073 fstat(3, {st_mode=S_IFREG|0644, st_size=357424, ...}) = 0
6073 mmap(NULL, 1407768, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x2aaaaabc1000
6073 mprotect(0x2aaaaac06000, 1125144, PROT_NONE) = 0
6073 mmap(0x2aaaaacc1000, 356352, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED, 3, 0) = 0x2aaaaacc1000
6073 mmap(0x2aaaaad18000, 2840, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aaaaad18000
6073 close(3) = 0
6073 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6073 open("/lib/tls/x86_64/libdl.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
6073 stat("/lib/tls/x86_64", 0x7ffffffff120) = -1 ENOENT (No such file
or directory)
6073 open("/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or
directory)
6073 stat("/lib/tls", 0x7ffffffff120) = -1 ENOENT (No such file or
directory)
6073 open("/lib/x86_64/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file
or directory)
6073 stat("/lib/x86_64", 0x7ffffffff120) = -1 ENOENT (No such file or
directory)
6073 open("/lib/libdl.so.2", O_RDONLY) = 3
6073 read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\36\0\0"..., 640) = 640
6073 close(3) = 0
6073 stat("/lib", {st_mode=S_IFDIR|0755, st_size=4376, ...}) = 0
6073 open("/usr/lib/tls/x86_64/libdl.so.2", O_RDONLY) = -1 ENOENT (No
such file or directory)
6073 stat("/usr/lib/tls/x86_64", 0x7ffffffff120) = -1 ENOENT (No such
file or directory)
6073 open("/usr/lib/tls/libdl.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
6073 stat("/usr/lib/tls", {st_mode=S_IFDIR|0755, st_size=136, ...}) = 0
6073 open("/usr/lib/x86_64/libdl.so.2", O_RDONLY) = -1 ENOENT (No such
file or directory)
6073 stat("/usr/lib/x86_64", 0x7ffffffff120) = -1 ENOENT (No such file
or directory)
6073 open("/usr/lib/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or
directory)
6073 stat("/usr/lib", {st_mode=S_IFDIR|0755, st_size=84064, ...}) = 0
6073 writev(2, [{"/bin/sh", 7}, {": ", 2}, {"error while loading shared
libra"..., 36}, {": ", 2}, {"libdl.so.2", 10}, {": ", 2}, {"cannot open
shared object file", 30}, {": ", 2}, {"No such file or directory", 25},
{"\n", 1}], 10 <unfinished ...>
6071 <... read resumed> "/bin/sh: error while loading sha"..., 8192) = 117
6071 read(5, <unfinished ...>
6073 <... writev resumed> ) = 117
6073 exit_group(127) = ?
6071 <... read resumed> "", 4096) = 0
[...]
And so on for all the programs it tries to test. What I see here is that
each time the linker found the right library in one of the search paths,
opens it, but for some reason doesn't seem happy with it and goes on
searching for another version.
A normal execution looks like this :
6596 execve("/usr/bin/dvdrecord", ["dvdrecord", "-version"], [/* 25
vars */]) = 0
6596 uname({sys="Linux", node="piman", ...}) = 0
6596 brk(0) = 0x541000
6596 mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS,
-1, 0) = 0x2aaaaaabf000
6596 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6596 open("/etc/ld.so.preload", O_RDONLY) = -1 ENOENT (No such file or
directory)
6596 open("/etc/ld.so.cache", O_RDONLY) = 3
6596 fstat(3, {st_mode=S_IFREG|0644, st_size=174616, ...}) = 0
6596 mmap(NULL, 174616, PROT_READ, MAP_PRIVATE, 3, 0) = 0x2aaaaaac0000
6596 close(3) = 0
6596 access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or
directory)
6596 open("/lib/libc.so.6", O_RDONLY) = 3
6596 read(3,
"\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340\324"..., 640) = 640
6596 fstat(3, {st_mode=S_IFREG|0755, st_size=1295328, ...}) = 0
6596 mmap(NULL, 2354760, PROT_READ|PROT_EXEC, MAP_PRIVATE, 3, 0) =
0x2aaaaabc1000
6596 mprotect(0x2aaaaace3000, 1166920, PROT_NONE) = 0
6596 mmap(0x2aaaaadc1000, 241664, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED, 3, 0x100000) = 0x2aaaaadc1000
6596 mmap(0x2aaaaadfc000, 15944, PROT_READ|PROT_WRITE,
MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x2aaaaadfc000
6596 close(3) = 0
[...]
So, why is it that called from perl, the run-time linker goes into all
the search paths whereas straight from the shell, the program loads the
right library directly ? Why, when called from perl, the linker doesn't
recognise the libraries ?
Antoine
Reply to: