dvdbackup: symbol lookup error: /usr/lib/libdvdread.so.4: undefined symbol: dlopen
Bug #869003 reported by
Russell Phillips
This bug affects 7 people
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libdvdread |
Confirmed
|
Undecided
|
Unassigned | ||
libdvdread (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Oneiric |
Fix Released
|
Undecided
|
Unassigned | ||
Precise |
Fix Released
|
High
|
Unassigned |
Bug Description
When running any DVD read operation from dvdbackup (such as -I, -F or -M), it immediately fails with the following error:
dvdbackup: symbol lookup error: /usr/lib/
This occurs on oneiric, however the DVD plays fine in totem (gstreamer). I suspect a function in libdvdread4 has gone walkabout, and dvdbackup needs to be rebuilt against the current version.
Changed in libdvdread: | |
status: | New → Confirmed |
Changed in libdvdread (Ubuntu): | |
status: | New → Triaged |
tags: |
added: verification-done removed: verification-needed |
Changed in libdvdread (Ubuntu Precise): | |
importance: | Undecided → High |
status: | Fix Released → Triaged |
To post a comment you must log in.
I built the .deb from the source package and it still had the same problem. Running nm on the .so doesn't work because it is stripped of symbols. However, after digging into the source directory, running nm on the just-compiled .so works because the symbols are not stripped. The libdl.so functions (dlopen and friends) are not mapped to any library when they should be. Removing the newly-built .so and rerunning make showed that the library was created with this command:
cd obj && gcc -shared -ldl -Wl,-soname= libdvdread. so.4 -o libdvdread.so dvd_input.so dvd_reader.so dvd_udf.so ifo_print.so ifo_read.so md5.so nav_print.so nav_read.so bitreader.so
Moving the linkage command telling gcc to link the libdl.so library to the libdvdread.so library to the end of the command worked. It generated a .so that shows linkage for the libdl.so functions when nm is run on it. The resulting command is:
cd obj && gcc -shared -Wl,-soname= libdvdread. so.4 -o libdvdread.so dvd_input.so dvd_reader.so dvd_udf.so ifo_print.so ifo_read.so md5.so nav_print.so nav_read.so bitreader.so -ldl
Copying the resulting libdvdread.so to /usr/lib/ libdvdread. so.4.1. 3 worked like a charm.
I have attached a simple patch to the Makefile which makes this correction. ?field. comment= I built the .deb from the source package and it still had the same problem. Running nm on the .so doesn't work because it is stripped of symbols. However, after digging into the source directory, running nm on the just-compiled .so works because the symbols are not stripped. The libdl.so functions (dlopen and friends) are not mapped to any library when they should be. Removing the newly-built .so and rerunning make showed that the library was created with this command:
cd obj && gcc -shared -ldl -Wl,-soname= libdvdread. so.4 -o libdvdread.so dvd_input.so dvd_reader.so dvd_udf.so ifo_print.so ifo_read.so md5.so nav_print.so nav_read.so bitreader.so
Moving the linkage command telling gcc to link the libdl.so library to the libdvdread.so library to the end of the command worked. It generated a .so that shows linkage for the libdl.so functions when nm is run on it. The resulting command is:
cd obj && gcc -shared -Wl,-soname= libdvdread. so.4 -o libdvdread.so dvd_input.so dvd_reader.so dvd_udf.so ifo_print.so ifo_read.so md5.so nav_print.so nav_read.so bitreader.so -ldl
Copying the resulting libdvdread.so to /usr/lib/ libdvdread. so.4.1. 3 worked like a charm.
I have attached a simple patch to the Makefile which makes this correction.