From: Charles Oliver Nutter Date: 2010-03-28T16:42:36+09:00 Subject: Re: A sure way to crash JRuby with Nokogiri, on Windows Have you tried 1.5.0 builds? There have been a lot of fixes since 1.4. ci.jruby.org/snapshots (sorry for brevity sent from ps3) - Charlie On 3/27/10, Luc Heinrich wrote: > 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(\n\n) > p Nokogiri::XML::Document.parse(xml) > > It works. > > Now try this: > > require "rubygems" > require "nokogiri" > th = Thread.new do > xml = %Q(\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? > > -- > Luc Heinrich - luc@honk-honk.com > > >