Possible ffi issue on windows - exposed via LibZMQ.zmq_term using ffi-rzmq gem
------------------------------------------------------------------------------
Key: JRUBY-6095
URL: https://jira.codehaus.org/browse/JRUBY-6095
Project: JRuby
Issue Type: Bug
Affects Versions: JRuby 1.6.4
Environment: jruby 1.6.4 (ruby-1.9.2-p136) (2011-08-23 17ea768) (Java
HotSpot(TM) Client VM 1.6.0_21) [Windows XP-x86-java]
Reporter: Patrik Sundberg
Assignee: Thomas E Enebo
Attachments: libzmq.dll
Easy way to replicate is to run examples\v2api\local_lat.rb and
remote_lat.rb.Neither server not client close down correctly. It uses a
finalizer to destroy the zmq context and if I stick in some tracer code there I
can see it never returns from that call.
Every once in a blue moon it does however finish properly on the client side
(remote_lat.rb), but not reproducible from what I can tell.
Taking a thread dump I see this for the main thread:
"main" prio=6 tid=0x00a87800 nid=0x1864 runnable [0x0022d000]
java.lang.Thread.State: RUNNABLE
at com.kenai.jffi.Foreign.invokeIrI(Native Method)
at com.kenai.jffi.Invoker.invokeIrI(Invoker.java:106)
at
org.jruby.ext.ffi.jffi.FastIntPointerMethodOneArg.invoke(FastIntPointerMethodOneArg.java:26)
at
org.jruby.ext.ffi.jffi.FastIntPointerMethodOneArg.call(FastIntPointerMethodOneArg.java:44)
at
org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:312)
at
org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:169)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.IfNode.interpret(IfNode.java:119)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at
org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
at
org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:374)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:328)
at org.jruby.runtime.BlockBody.call(BlockBody.java:73)
at org.jruby.runtime.Block.call(Block.java:89)
at org.jruby.RubyProc.call(RubyProc.java:274)
at org.jruby.RubyProc.call(RubyProc.java:229)
at org.jruby.RubyProc$i$0$0$call.call(RubyProc$i$0$0$call.gen:65535)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:211)
at
org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:207)
at org.jruby.RubyClass.finvoke(RubyClass.java:686)
at
org.jruby.javasupport.util.RuntimeHelpers.invoke(RuntimeHelpers.java:548)
at
org.jruby.RubyBasicObject$Finalizer.callFinalizer(RubyBasicObject.java:1984)
at
org.jruby.RubyBasicObject$Finalizer.finalize(RubyBasicObject.java:1974)
at org.jruby.Ruby.tearDown(Ruby.java:2761)
- locked <0x1dc6f1c0> (a java.lang.Object)
at org.jruby.Ruby.tearDown(Ruby.java:2726)
at org.jruby.Main.internalRun(Main.java:201)
at org.jruby.Main.run(Main.java:164)
at org.jruby.Main.run(Main.java:148)
at org.jruby.Main.main(Main.java:128)
Locked ownable synchronizers:
- None
I'm not sure how to debug this. Given I can find no mentions of this elsewhere
I assume this works on linux/osx, so thinking potentially related to FFI on
windows in some way.
Attaching the libzmq.dll needed to use the gem on windows (ffi-rzmq). Apart
from shutdown the gem seem to work just fine on windows from some light
testing. Invoking the same functions in a C program linked to same DLL works
fine.
Let me know if I can help out more in figuring this out. I'd really like some
jruby windows zeromq clients.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email