[libxml-devel] 0.9.8 crashes on Mac OS X
Jacob Lauemøller
jacob.lauemoeller at iteray.com
Sat Feb 21 02:50:28 EST 2009
Hi,
LibXML::XML::LIBXML_VERSION reports 2.6.16 but ports
reports
libxml2 @2.7.2 textproc/libxml2
something is not quite right here.
Thanks for the tip about the validation call-back!
Cheers,
Jacob
On 21/02/2009, at 05.56, Norihito YAMAKAWA wrote:
> 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.lauemoeller at 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 at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/libxml-devel
>>
> _______________________________________________
> libxml-devel mailing list
> libxml-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/libxml-devel
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 1933 bytes
Desc: not available
URL: <http://rubyforge.org/pipermail/libxml-devel/attachments/20090221/877c0b26/attachment-0001.bin>
More information about the libxml-devel
mailing list