[oe-commits] Holger Hans Peter Freyther : gstreamer_0.10.17: Work around glibc bug with dlopen

GIT User account git at amethyst.openembedded.net
Sat Nov 15 12:14:23 UTC 2008


Module: openembedded.git
Branch: org.openembedded.dev
Commit: 4a66c132ce2282f4a14b97d08e3557f855eb7b0e
URL:    http://gitweb.openembedded.net/?p=openembedded.git&a=commit;h=4a66c132ce2282f4a14b97d08e3557f855eb7b0e

Author: Holger Hans Peter Freyther <zecke at openmoko.org>
Date:   Fri Nov 14 23:40:28 2008 +0100

gstreamer_0.10.17: Work around glibc bug with dlopen

    When installing gstreamer-dbg and running gst-inspect-0.10 gstreamer
    will crash. Somehow glibc can not properly fail dlopening our debug
    so. Work around by not going into the .debug directories when
    searching plugins.

---

 .../registry-do-not-look-into-debug-dirs.patch     |   39 ++++++++++++++++++++
 packages/gstreamer/gstreamer_0.10.17.bb            |    5 ++-
 2 files changed, 42 insertions(+), 2 deletions(-)

diff --git a/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch b/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch
new file mode 100644
index 0000000..6733e6b
--- /dev/null
+++ b/packages/gstreamer/gstreamer/registry-do-not-look-into-debug-dirs.patch
@@ -0,0 +1,39 @@
+Work around a glibc 2.6.1 bug with dlopen. We try to dlopen a .so file that
+only contains debug symbols (e.g. no architecture is set in the elf header)
+
+
+#0  0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3
+(gdb) bt
+#0  0x4000a88c in _dl_relocate_object () from /lib/ld-linux.so.3
+#1  0x40011f68 in dl_open_worker () from /lib/ld-linux.so.3
+#2  0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3
+#3  0x400117d8 in _dl_open () from /lib/ld-linux.so.3
+#4  0x402fba84 in dlopen_doit () from /lib/libdl.so.2
+#5  0x4000d7e4 in _dl_catch_error () from /lib/ld-linux.so.3
+#6  0x402fbf50 in _dlerror_run () from /lib/libdl.so.2
+#7  0x402fb9bc in dlopen@@GLIBC_2.4 () from /lib/libdl.so.2
+#8  0x402f2790 in g_module_open () from /usr/lib/libgmodule-2.0.so.0
+#9  0x40078784 in gst_plugin_load_file (
+    filename=0x10a6c8 "/usr/lib/gstreamer-0.10/.debug/libgstcoreindexers.so", 
+    error=0x0) at gstplugin.c:481
+#10 0x4007e3c4 in gst_registry_scan_path_level (registry=0x27828, 
+    path=0x10a6a0 "/usr/lib/gstreamer-0.10/.debug", level=1) at gstregistry.c:891
+#11 0x4007df04 in gst_registry_scan_path_level (registry=0x27828, 
+
+
+Index: gstreamer-0.10.17/gst/gstregistry.c
+===================================================================
+--- gstreamer-0.10.17.orig/gst/gstregistry.c	2008-11-14 23:30:48.000000000 +0100
++++ gstreamer-0.10.17/gst/gstregistry.c	2008-11-14 23:32:39.000000000 +0100
+@@ -813,7 +813,10 @@
+     GST_LOG_OBJECT (registry, "examining file: %s", filename);
+ 
+     if (g_file_test (filename, G_FILE_TEST_IS_DIR)) {
+-      if (level > 0) {
++      if (g_str_has_suffix (filename, ".debug")) {
++        GST_LOG_OBJECT (registry,
++            "found directory, not descending into .debug directory");
++      } else if (level > 0) {
+         GST_LOG_OBJECT (registry, "found directory, recursing");
+         changed |= gst_registry_scan_path_level (registry, filename, level - 1);
+       } else {
diff --git a/packages/gstreamer/gstreamer_0.10.17.bb b/packages/gstreamer/gstreamer_0.10.17.bb
index 51a1426..4087e8e 100644
--- a/packages/gstreamer/gstreamer_0.10.17.bb
+++ b/packages/gstreamer/gstreamer_0.10.17.bb
@@ -1,6 +1,7 @@
 require gstreamer.inc
 
-PR = "r3"
+PR = "r4"
 
-SRC_URI += "file://po-makefile-fix.patch;patch=1"
+SRC_URI += "file://po-makefile-fix.patch;patch=1 \
+            file://registry-do-not-look-into-debug-dirs.patch;patch=1 "
 





More information about the Openembedded-commits mailing list