From: Mike Dalessio Date: 2010-03-29T22:44:54+09:00 Subject: Re: A sure way to crash JRuby with Nokogiri, on Windows --00151757671cb12fdd0482f0b787 Content-Type: text/plain; charset=ISO-8859-1 I'll take a look. I've commented on the JRuby ticket as well. On Sun, Mar 28, 2010 at 3:42 AM, Charles Oliver Nutter wrote: > 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 > > > > > > > > --00151757671cb12fdd0482f0b787--