[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: