Bugs: Browse | Submit New | Admin

[#27256] LoadError - Symbol not found: _xmlAddChild

2009-10-08 15:14
Submitted By:
Joshua Lippiner (jlippiner)
Assigned To:
Charlie Savage (cfis)
LoadError - Symbol not found: _xmlAddChild

Detailed description
My system appears to have 1.1.2 AND 1.1.3 installed.   Im running Snow Leopard.  Also, I cannot uninstall 1.1.2 for
whatever reason.

11:11 AM ~/projects/v16 => console
Loading development environment (Rails 2.3.4)
Loading haml-edge gem.
>> require 'xml'
LoadError: dlopen(/Users/jlippiner/.gem/ruby/1.8/gems/libxml-ruby-1.1.3/lib/libxml_ruby.bundle, 9): Symbol not found:
  Referenced from: /Users/jlippiner/.gem/ruby/1.8/gems/libxml-ruby-1.1.3/lib/libxml_ruby.bundle
  Expected in: flat namespace
 in /Users/jlippiner/.gem/ruby/1.8/gems/libxml-ruby-1.1.3/lib/libxml_ruby.bundle
- /Users/jlippiner/.gem/ruby/1.8/gems/libxml-ruby-1.1.3/lib/libxml_ruby.bundle
	from /Users/jlippiner/.gem/ruby/1.8/gems/libxml-ruby-1.1.3/lib/libxml_ruby.bundle

Add A Comment: Notepad

Please login


Date: 2012-01-03 02:03
Sender: Matt Lally

Did you ever solve this problem?  If so, may I ask how?
Date: 2011-04-23 03:47
Sender: Charlie Savage

Hi guys,

I know this is pretty old - and I have no idea what could be
causing it.  Does the latest release have the same problem?

Thanks - Charlie
Date: 2010-11-23 13:28
Sender: Graeme Mathieson


I think I might be stumbling across the same problem. I've had
a wee dig around and think I might have some further information,
but I'm not entirely sure what to make of it.

First of all, some background. We have a CI server to verify
that the tests are passing. It runs through the following

* Grab the latest code
* Create an empty RVM gemset
* Use gem bundler to install all the gem dependencies
* Run the test suite.

Sounds good? It is, most of the time. Once in a while, though,
when attempting to run the test suite, we get:

bxml-ruby-1.1.4/lib/libxml_ruby.bundle, 9): Symbol not found:
 Referenced from: /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-78
 Expected in: flat namespace
 in /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-78296/gems/libxm
- /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-78296/gems/libxml-

This doesn't happen on all runs, and re-running the CI build
with the same commit often makes it work again later, so I'm
reasonably(ish!) confident it's not an app problem. This is a
CI server that I'm not actively messing with either, so I'm reasonably
happy that the environment is stable.

So, I dug in a little. It's right, that bundle doesn't have the
symbol it's looking for. In fact, the bundle doesn't have any

$ nm libxml-ruby-1.1.4-broken/lib/libxml_ruby.bundle 
0000000000000000 t __mh_bundle_header
                 U dyld_stub_binder

That's weird, right? Well, weirder still, none of the object
files have any symbols:

$ nm libxml-ruby-1.1.4-broken/ext/libxml/ruby_xml.o

produces nothing. So, gcc is producing a file without any symbols.
What kind of file is it producing?

$ file libxml-ruby-1.1.4-broken/ext/libxml/ruby_xml.o
libxml-ruby-1.1.4-broken/ext/libxml/ruby_xml.o: 80386 COFF executable
not stripped - version 30821

That's weird, because a correctly built version is a Mach-O 64
bit object file as you'd expect:

$ file libxml-ruby-1.1.4-working/ext/libxml/ruby_xml.o
libxml-ruby-1.1.4-working/ext/libxml/ruby_xml.o: Mach-O 64-bit
object x86_64

Apart from the generated objects and bundles, there are no appreciable
differences between the broken version and the working version:

$ diff -urN libxml-ruby-1.1.4-{broken,working}
diff -urN libxml-ruby-1.1.4-broken/ext/libxml/Makefile
--- libxml-ruby-1.1.4-broken/ext/libxml/Makefile	2010-11-23
12:02:32.000000000 +0000
+++ libxml-ruby-1.1.4-working/ext/libxml/Makefile	2010-11-23
11:32:32.000000000 +0000
@@ -96,8 +96,8 @@
 BINDIR        = $(bindir)
 RUBYCOMMONDIR = $(sitedir)$(target_prefix)
-RUBYLIBDIR = /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-5839/g
-RUBYARCHDIR = /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-5839/
+RUBYLIBDIR = /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-3367/g
+RUBYARCHDIR = /Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-3367/
 CLEANLIBS     = $(TARGET).bundle $(TARGET).il? $(TARGET).tds
diff -urN libxml-ruby-1.1.4-broken/ext/libxml/mkmf.log
--- libxml-ruby-1.1.4-broken/ext/libxml/mkmf.log	2010-11-23
12:02:32.000000000 +0000
+++ libxml-ruby-1.1.4-working/ext/libxml/mkmf.log	2010-11-23
11:32:32.000000000 +0000
@@ -1,7 +1,7 @@
 have_library: checking for socket() in -lsocket...
-------------------- no
 "gcc -o conftest -I.
n10.4.0 -I.  -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE   -g -O2  -pipe
-fno-common   conftest.c 
-L. -L/Users/ci/.rvm/rubies/ree-1.8.7-2010.02/lib
-L/Users/ci/.rvm/rubies/ree-1.8.7-2010.02/lib -L.      -lruby-static
-lsocket  -ldl -lobjc  "
warning: Insecure world writable dir
/Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-5839/bin in PATH,
mode 040777
warning: Insecure world writable dir
/Users/ci/.rvm/gems/ree-1.8.7-2010.02@cruise-3367/bin in PATH,
mode 040777
 conftest.c: In function ‘t’:
 conftest.c:3: error: ‘socket’ undeclared (first use in this
 conftest.c:3: error: (Each undeclared identifier is reported
only once

The host environment here is Mac OS X 10.6.5, we're using Ruby
Enterprise Edition 2010.02 (1.8.7), and we're using the Mac OS
X-supplied libxml2:

$ which xml2-config
$ xml2-config --version

I have no idea where to go next while tracking this down! Any
Date: 2010-04-18 12:06
Sender: Jim Tobin

I see this, too.  Both the reporting of 1.1.2 and 1.1.3 installed,
and the missing symbol.  Curiously, my Leopard machine does not
report a missing symbol, and it has 1.1.3, 0.9.5 and

Attached Files:

Name Description Download
No Files Currently Attached


Field Old Value Date By
resolution_idNone2011-04-23 03:47cfis
assigned_tonone2011-04-23 03:47cfis