Greetings,
I’m sending this to Ruby-talk because I’m really not sure if the problem
is in JRuby, Nokogiri or FFI.
So, Using JRuby 1.4.0 (standard or complete) and Nokogiri-java 1.4.1, on
Windows, try this:
require “rubygems”
require “nokogiri”
xml = %Q(<?xml version="1.0" encoding="UTF-8"?>\n\n)
p Nokogiri::XML::Document.parse(xml)
It works.
Now try this:
require “rubygems”
require “nokogiri”
th = Thread.new do
xml = %Q(<?xml version="1.0" encoding="UTF-8"?>\n\n)
p Nokogiri::XML::Document.parse(xml)
end
th.join
And see it crash with an EXCEPTION_ACCESS_VIOLATION. Here’s the top of
the stack:
Stack: [0x03260000,0x032b0000], sp=0x032aedb4, free space=315k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code,
C=native code)
C [ntdll.dll+0x1b21a]
C [ntdll.dll+0x1046]
j com.kenai.jffi.Foreign.invokeVrI(J)I+0
j com.kenai.jffi.Invoker.invokeVrI(Lcom/kenai/jffi/Function;)I+8
j
org.jruby.ext.ffi.jffi.FastIntMethodZeroArg.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyModule;Ljava/lang/String;)Lorg/jruby/runtime/builtin/IRubyObject;+12
J
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/RubyClass;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
J
org.jruby.runtime.callsite.CachingCallSite.call(Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/builtin/IRubyObject;)Lorg/jruby/runtime/builtin/IRubyObject;
J
org.jruby.ast.CallNoArgNode.interpret(Lorg/jruby/Ruby;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
J
org.jruby.ast.NewlineNode.interpret(Lorg/jruby/Ruby;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
J
org.jruby.ast.BlockNode.interpret(Lorg/jruby/Ruby;Lorg/jruby/runtime/ThreadContext;Lorg/jruby/runtime/builtin/IRubyObject;Lorg/jruby/runtime/Block;)Lorg/jruby/runtime/builtin/IRubyObject;
This works just fine on OS X. Anyone has any idea what the problem is?