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.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

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
libxml-devel mailing list
libxml-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/libxml-devel

Reply via email to