Hi. I tested on OSX 10.4.11 with LibXML 2.7.2 from Darwin ports, but just works fine. Validation error printed same as your Ubuntsu one, no segmentation fault.
This might be Leopard or LibXML2 issue. Which LibXML version does you use ? It can be given by LibXML::XML::LIBXML_VERSION. In addition, validate_schema's callback seems not work currently. Though LibXML2 has error call back API on Schema validation, ruby-libxml also use it, but never invoked. It would be LibXML2 bug. You can use global error handler to capture validation errors, set by XML::Error#set_handler. 2009/2/20 Jacob Lauemøller <jacob.lauemoel...@iteray.com>: > Hi guys > > I'm having major problems with libxml-ruby version 0.9.8 on Mac OS X 10.5.6. > The gem installs without problems, but schema validation errors result in a > Bus Error or Segmentation Fault. > > The problem doesn't occur when the same code is run against 0.9.7, nor does > it occur with 0.9.8. on Ubuntu. > > I have constructed the following sample program which illustrates the > problem: > > -----------------------[ validate.rb ]---------------- > require 'rubygems' > require 'libxml' > > include LibXML > > if ARGV.length < 2 > puts 'Wrong number of arguments' > puts 'ruby validate.rb path/to/schema/file path/to/xml/file...' > exit 1 > end > > schema = XML::Schema.document(XML::Document.file(ARGV.shift)) > > ARGV.each do | xml_file_name | > instance = XML::Document.file(xml_file_name) > result = instance.validate_schema(schema) do |message, is_error| > puts "#{is_error ? 'ERROR' : 'WARNING'}: #{xml_file_name}: #{message}" > end > > puts "#{xml_file_name} is #{result ? 'VALID' : 'INVALID'}" > end > -------------------------------------------------- > > -----------------------[ schema.rb ]---------------- > <?xml version="1.0" encoding="UTF-8"?> > <xs:schema > targetNamespace="http://not.important/status" > xmlns:tns="http://not.important/status" > xmlns:xs="http://www.w3.org/2001/XMLSchema" > elementFormDefault="qualified" > attributeFormDefault="unqualified"> > > <xs:complexType name="Release"> > <xs:sequence> > <xs:element name="name" type="xs:string"/> > <xs:element name="state" type="xs:string"/> > </xs:sequence> > </xs:complexType> > > <xs:element name="release" type="tns:Release"/> > </xs:schema> > --------------------------------------------------- > > -----------------------[ sample1.xml ]--------------- > <?xml version="1.0" encoding="UTF-8"?> > <release xmlns="http://not.important/status"> > <Name>release</Name> > <state>Ready</state> > </release> > --------------------------------------------------- > > Running validate.rb with the schema and sample xml file should generate a > validation error since the 'name' element is misspelled. But instead (on > Mac OS X) I get > > $ ruby validate.rb schema.xsd sample1.xml > validate.rb:16: [BUG] Segmentation fault > ruby 1.8.6 (2008-03-03) [universal-darwin9.0] > > Abort trap > > With 0.9.7 I get > > Error: Element 'release' [CT 'Release']: The element content is not valid. > at sample1.xml:0. > validate.rb:16:in `validate_schema': Error: Element 'release' [CT > 'Release']: The element content is not valid. at sample1.xml:0. > (LibXML::XML::Error) > from validate.rb:16 > from validate.rb:14:in `each' > from validate.rb:14 > > On Ubuntu, 0.9.8 gives me > > Error: Element '{http://not.important/status}Name': This element is not > expected. Expected is ( {http://not.important/status}name ). at > sample1.xml:3. > validate.rb:16:in `validate_schema': Error: Element > '{http://not.important/status}Name': This element is not expected. Expected > is ( {http://not.important/status}name ). at sample1.xml:3. > (LibXML::XML::Error) > from validate.rb:16 > from validate.rb:14:in `each' > from validate.rb:14 > > which is spot on. > > ruby --version on the Mac yields > > ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0] > > and on Ubuntu > > ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] > > The Mac OS X Problem Report for the 0.9.8 case looks like this: > > Process: ruby [26788] > Path: /usr/bin/ruby > Identifier: ruby > Version: ??? (???) > Code Type: X86 (Native) > Parent Process: bash [24391] > > Date/Time: 2009-02-20 13:27:09.694 +0100 > OS Version: Mac OS X 10.5.6 (9G55) > Report Version: 6 > > Exception Type: EXC_BAD_ACCESS (SIGABRT) > Exception Codes: KERN_INVALID_ADDRESS at 0x0000000014000004 > Crashed Thread: 0 > > Thread 0 Crashed: > 0 libSystem.B.dylib 0x93d15e42 __kill + 10 > 1 libSystem.B.dylib 0x93d8823a raise + 26 > 2 libSystem.B.dylib 0x93d94679 abort + 73 > 3 libruby.1.dylib 0x000cdc10 rb_exc_new + 0 > 4 libruby.1.dylib 0x0013460f rb_gc_mark_trap_list + > 508 > 5 libSystem.B.dylib 0x93d142bb _sigtramp + 43 > 6 ??? 0xffffffff 0 + 4294967295 > 7 libruby.1.dylib 0x000cfdfc rb_clear_cache_by_class + > 141 > 8 libruby.1.dylib 0x000db655 rb_obj_respond_to + 129 > 9 libruby.1.dylib 0x000db6e1 rb_respond_to + 32 > 10 libxml_ruby.bundle 0x0019f4ce structuredErrorFunc + 110 > 11 libxml2.2.dylib 0x915402ba __xmlRaiseError + 1029 > 12 libxml2.2.dylib 0x915a4eef xmlSchemaSetValidOptions > + 5875 > 13 libxml2.2.dylib 0x915aa076 xmlSchemaNewDocParserCtxt > + 8158 > 14 libxml2.2.dylib 0x915a90fa xmlSchemaNewDocParserCtxt > + 4194 > 15 libxml2.2.dylib 0x915b8733 xmlSchemaNewDocParserCtxt > + 67227 > 16 libxml2.2.dylib 0x915b8841 xmlSchemaValidateDoc + > 129 > 17 libxml_ruby.bundle 0x0019e462 > rxml_document_validate_schema + 129 > 18 libruby.1.dylib 0x000da14c rb_eval_string_wrap + > 16637 > 19 libruby.1.dylib 0x000dad2a rb_eval_string_wrap + > 19675 > 20 libruby.1.dylib 0x000d809a rb_eval_string_wrap + > 8267 > 21 libruby.1.dylib 0x000d70d7 rb_eval_string_wrap + > 4232 > 22 libruby.1.dylib 0x000d89ec rb_eval_string_wrap + > 10653 > 23 libruby.1.dylib 0x000de138 rb_thread_trap_eval + > 2393 > 24 libruby.1.dylib 0x000defe6 rb_yield + 33 > 25 libruby.1.dylib 0x000bfc7d rb_ary_each + 30 > 26 libruby.1.dylib 0x000da14c rb_eval_string_wrap + > 16637 > 27 libruby.1.dylib 0x000dad2a rb_eval_string_wrap + > 19675 > 28 libruby.1.dylib 0x000d809a rb_eval_string_wrap + > 8267 > 29 libruby.1.dylib 0x000d70d7 rb_eval_string_wrap + > 4232 > 30 libruby.1.dylib 0x000e702e rb_load_protect + 298 > 31 libruby.1.dylib 0x000e705f ruby_exec + 22 > 32 libruby.1.dylib 0x000e708b ruby_run + 42 > 33 ruby 0x00001fff 0x1000 + 4095 > 34 ruby 0x00001fa6 start + 54 > > Thread 0 crashed with X86 Thread State (32-bit): > eax: 0x00000000 ebx: 0x93d94639 ecx: 0xbfffd65c edx: 0x93d15e42 > edi: 0xa04a2690 esi: 0x00000010 ebp: 0xbfffd678 esp: 0xbfffd65c > ss: 0x0000001f efl: 0x00000286 eip: 0x93d15e42 cs: 0x00000007 > ds: 0x0000001f es: 0x0000001f fs: 0x00000000 gs: 0x00000037 > cr2: 0xffe2aa74 > > Binary Images: > 0x1000 - 0x1ffe +ruby ??? (???) <660a81a680415ef4ca4d85d3104eed85> > /usr/bin/ruby > 0x3a000 - 0x3bffc thread.bundle ??? (???) > <d62a9b0eba909a01e0f24cda4d3f8b46> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0/thread.bundle > 0x98000 - 0x9affd stringio.bundle ??? (???) > <6ef963050f33481408e309d4ac8a06c7> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0/stringio.bundle > 0xbf000 - 0x15cffb libruby.1.dylib ??? (???) > <bf28599e1ca8de35546083fa05758cf8> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/libruby.1.dylib > 0x17e000 - 0x191ff7 syck.bundle ??? (???) > <12c497c718eb3c5b47d3f286b531dfc4> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0/syck.bundle > 0x197000 - 0x197ffc etc.bundle ??? (???) > <b9f04200980be0fe3973b21401e5e37f> > /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin9.0/etc.bundle > 0x19b000 - 0x1b4ffc +libxml_ruby.bundle ??? (???) > <7dadcfbc46249cc29bd4d9451269cba6> > /Library/Ruby/Gems/1.8/gems/libxml-ruby-0.9.8/lib/libxml_ruby.bundle > 0x8fe00000 - 0x8fe2db43 dyld 97.1 (???) <100d362e03410f181a34e04e94189ae5> > /usr/lib/dyld > 0x90853000 - 0x9085afe9 libgcc_s.1.dylib ??? (???) > <f53c808e87d1184c0f9df63aef53ce0b> /usr/lib/libgcc_s.1.dylib > 0x90ab6000 - 0x90beeff7 libicucore.A.dylib ??? (???) > <18098dcf431603fe47ee027a60006c85> /usr/lib/libicucore.A.dylib > 0x9151a000 - 0x915fbff7 libxml2.2.dylib ??? (???) > <d69560099d9eb32ba7f8a17baa65a28d> /usr/lib/libxml2.2.dylib > 0x93ca7000 - 0x93e0eff3 libSystem.B.dylib ??? (???) > <d68880dfb1f8becdbdac6928db1510fb> /usr/lib/libSystem.B.dylib > 0x95416000 - 0x95424ffd libz.1.dylib ??? (???) > <5ddd8539ae2ebfd8e7cc1c57525385c7> /usr/lib/libz.1.dylib > 0x95a2f000 - 0x95a8cffb libstdc++.6.dylib ??? (???) > <04b812dcec670daa8b7d2852ab14be60> /usr/lib/libstdc++.6.dylib > 0x95d38000 - 0x95d3cfff libmathCommon.A.dylib ??? (???) > /usr/lib/system/libmathCommon.A.dylib > 0x95f97000 - 0x9608bff4 libiconv.2.dylib ??? (???) > <c508c60fafca17824c0017b2e4369802> /usr/lib/libiconv.2.dylib > 0xffff0000 - 0xffff1780 libSystem.B.dylib ??? (???) > /usr/lib/libSystem.B.dylib > > Any ideas? > Kind regards, > > Jacob > > _______________________________________________ > libxml-devel mailing list > libxml-devel@rubyforge.org > http://rubyforge.org/mailman/listinfo/libxml-devel > _______________________________________________ libxml-devel mailing list libxml-devel@rubyforge.org http://rubyforge.org/mailman/listinfo/libxml-devel