Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

after doesn't fire / sockets disappear #114

Closed
bornmw opened this issue Nov 6, 2012 · 14 comments
Closed

after doesn't fire / sockets disappear #114

bornmw opened this issue Nov 6, 2012 · 14 comments

Comments

@bornmw
Copy link

bornmw commented Nov 6, 2012

My primitive app accepts a connection and closes it after 10 seconds.
I'm using jMeter to open 2000 connections.
Only about 1800 of them get a reply and get actually closed.
200 connections keep waiting forever.

require 'celluloid/io'

class TimeTest
  include Celluloid::IO

  def test
    server = TCPServer.new('localhost', 8080)
    loop do
      socket = server.accept
      after(10) { socket.write "hello!"; socket.close }
    end
  end

end

TimeTest.new.test
@tarcieri
Copy link
Member

tarcieri commented Nov 9, 2012

Can you post the JMeter scenario you used?

I'm thinking this might have something to do with the connection backlog but being able to repro your problem would be the best way to determine that.

What Ruby VM are you using? Can you try it on JRuby and take a thread dump?

@bornmw
Copy link
Author

bornmw commented Nov 9, 2012

Not sure how to attach files here...
This is the scenario that I'm using, you can put it to some file with .jmx extension and open it in jMeter. Then Run->Start and results will be graphed in Graph Results.
In the meantime I will try jRuby.

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="2.3" jmeter="2.8 r1393162">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
      <stringProp name="TestPlan.comments"></stringProp>
      <boolProp name="TestPlan.functional_mode">false</boolProp>
      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="TestPlan.user_define_classpath"></stringProp>
    </TestPlan>
    <hashTree>
      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
          <boolProp name="LoopController.continue_forever">false</boolProp>
          <stringProp name="LoopController.loops">1</stringProp>
        </elementProp>
        <stringProp name="ThreadGroup.num_threads">2000</stringProp>
        <stringProp name="ThreadGroup.ramp_time">1</stringProp>
        <longProp name="ThreadGroup.start_time">1352433759000</longProp>
        <longProp name="ThreadGroup.end_time">1352433759000</longProp>
        <boolProp name="ThreadGroup.scheduler">false</boolProp>
        <stringProp name="ThreadGroup.duration"></stringProp>
        <stringProp name="ThreadGroup.delay"></stringProp>
      </ThreadGroup>
      <hashTree>
        <TCPSampler guiclass="TCPSamplerGui" testclass="TCPSampler" testname="TCP Sampler" enabled="true">
          <stringProp name="TCPSampler.server">localhost</stringProp>
          <boolProp name="TCPSampler.reUseConnection">true</boolProp>
          <stringProp name="TCPSampler.port">8080</stringProp>
          <boolProp name="TCPSampler.nodelay">false</boolProp>
          <stringProp name="TCPSampler.timeout"></stringProp>
          <stringProp name="TCPSampler.request"></stringProp>
          <stringProp name="ConfigTestElement.username"></stringProp>
          <stringProp name="ConfigTestElement.password"></stringProp>
        </TCPSampler>
        <hashTree/>
      </hashTree>
      <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
        <boolProp name="ResultCollector.error_logging">false</boolProp>
        <objProp>
          <name>saveConfig</name>
          <value class="SampleSaveConfiguration">
            <time>true</time>
            <latency>true</latency>
            <timestamp>true</timestamp>
            <success>true</success>
            <label>true</label>
            <code>true</code>
            <message>true</message>
            <threadName>true</threadName>
            <dataType>true</dataType>
            <encoding>false</encoding>
            <assertions>true</assertions>
            <subresults>true</subresults>
            <responseData>false</responseData>
            <samplerData>false</samplerData>
            <xml>true</xml>
            <fieldNames>false</fieldNames>
            <responseHeaders>false</responseHeaders>
            <requestHeaders>false</requestHeaders>
            <responseDataOnError>false</responseDataOnError>
            <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
            <assertionsResultsToSave>0</assertionsResultsToSave>
            <bytes>true</bytes>
          </value>
        </objProp>
        <stringProp name="filename"></stringProp>
      </ResultCollector>
      <hashTree/>
    </hashTree>
  </hashTree>
</jmeterTestPlan>

@bornmw
Copy link
Author

bornmw commented Nov 9, 2012

I'd also like to note that this exact test plan works fine with this node.js code:

var net = require('net');

var server = net.createServer(function (socket) {
  setTimeout(function() {socket.write('hello!'); socket.end()}, 10000);
});

server.listen(8080, '127.0.0.1');

which means that test plan is good

@bornmw
Copy link
Author

bornmw commented Nov 9, 2012

and
$ ruby -v ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]

@tarcieri
Copy link
Member

tarcieri commented Nov 9, 2012

@bornmw I'll take a look when I get a chance

@bornmw
Copy link
Author

bornmw commented Nov 9, 2012

with JRuby 476 connections don't get closed

$ ./jruby -v jruby 1.7.0 (1.9.3p203) 2012-10-22 ff1ebbe on OpenJDK 64-Bit Server VM 1.6.0_24-b24 [linux-amd64]

Thread dump:

2012-11-08 21:16:58
Full thread dump OpenJDK 64-Bit Server VM (20.0-b12 mixed mode):

"RMI TCP Connection(2)-127.0.0.1" daemon prio=10 tid=0x00007f2be4002800 nid=0x1554 runnable [0x00007f2c4bbfc000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:146)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
    - locked <0x00000000f6505730> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:83)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - <0x00000000f628f340> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"JMX server connection timeout 25" daemon prio=10 tid=0x00007f2be8062800 nid=0x154a in Object.wait() [0x00007f2c4bdfd000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f6363a90> (a [I)
    at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:168)
    - locked <0x00000000f6363a90> (a [I)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"RMI Scheduler(0)" daemon prio=10 tid=0x00007f2be8061800 nid=0x1548 waiting on condition [0x00007f2c4bffe000]
   java.lang.Thread.State: TIMED_WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000f626a8b8> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2081)
    at java.util.concurrent.DelayQueue.take(DelayQueue.java:193)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:688)
    at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:681)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"RMI TCP Connection(1)-127.0.0.1" daemon prio=10 tid=0x00007f2be4001000 nid=0x1546 runnable [0x00007f2c504c1000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:146)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:235)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:254)
    - locked <0x00000000f63128d0> (a java.io.BufferedInputStream)
    at java.io.FilterInputStream.read(FilterInputStream.java:83)
    at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:808)
    at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:667)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - <0x00000000f628ee98> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"RMI TCP Accept-0" daemon prio=10 tid=0x00007f2c0805a800 nid=0x1543 runnable [0x00007f2c50ad5000]
   java.lang.Thread.State: RUNNABLE
    at java.net.PlainSocketImpl.socketAccept(Native Method)
    at java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:375)
    at java.net.ServerSocket.implAccept(ServerSocket.java:470)
    at java.net.ServerSocket.accept(ServerSocket.java:438)
    at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:52)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:387)
    at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:359)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"Attach Listener" daemon prio=10 tid=0x00007f2c28001000 nid=0x1540 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"RubyThread-10: /tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/internal_pool.rb:45" daemon prio=10 tid=0x00007f2c58178000 nid=0x938 runnable [0x00007f2c50cd3000]
   java.lang.Thread.State: RUNNABLE
    at sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
    at sun.nio.ch.EPollArrayWrapper.poll(EPollArrayWrapper.java:228)
    at sun.nio.ch.EPollSelectorImpl.doSelect(EPollSelectorImpl.java:83)
    at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:87)
    - locked <0x00000000e1230d50> (a sun.nio.ch.Util$1)
    - locked <0x00000000e1230d40> (a java.util.Collections$UnmodifiableSet)
    - locked <0x00000000f7f1e8a8> (a sun.nio.ch.EPollSelectorImpl)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:98)
    at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:102)
    at org.nio4r.Nio4r$Selector.doSelect(Nio4r.java:270)
    at org.nio4r.Nio4r$Selector.select(Nio4r.java:234)
    - locked <0x00000000f7f1e880> (a org.nio4r.Nio4r$Selector)
    at org.nio4r.Nio4r$Selector$INVOKER$i$select.call(Nio4r$Selector$INVOKER$i$select.gen)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:177)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:188)
    at rubyjit.Celluloid::IO::Reactor$$run_once_EC1FDB5E62FA19632A31BC859A049995CBB7493E.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb:49)
    at rubyjit.Celluloid::IO::Reactor$$run_once_EC1FDB5E62FA19632A31BC859A049995CBB7493E.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb)
    at org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:42)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Celluloid::IO::Mailbox$$receive_3620F6E26F15C2E33D05EDCA22ECF3DDA2CDB438.chained_0_rescue_1$RUBY$SYNTHETIC__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/mailbox.rb:53)
    at rubyjit.Celluloid::IO::Mailbox$$receive_3620F6E26F15C2E33D05EDCA22ECF3DDA2CDB438.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/mailbox.rb)
    at rubyjit.Celluloid::IO::Mailbox$$receive_3620F6E26F15C2E33D05EDCA22ECF3DDA2CDB438.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/mailbox.rb)
    at org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:42)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.IfNode.interpret(IfNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:176)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.VCallNode.interpret(VCallNode.java:88)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call19(RubyProc.java:249)
    at org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call(RubyProc.java:213)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"RubyThread-9: /tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/internal_pool.rb:45" daemon prio=10 tid=0x00007f2bf8001000 nid=0x937 in Object.wait() [0x00007f2c50ed4000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f7e75ab0> (a org.jruby.ext.thread.ConditionVariable)
    at java.lang.Object.wait(Object.java:460)
    at org.jruby.RubyThread$SleepTask.run(RubyThread.java:906)
    - locked <0x00000000f7e75ab0> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:922)
    at org.jruby.RubyThread.wait_timeout(RubyThread.java:1217)
    at org.jruby.ext.thread.ConditionVariable.wait_ruby(ConditionVariable.java:96)
    - locked <0x00000000f7e75ab0> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.ext.thread.ConditionVariable$INVOKER$i$0$1$wait_ruby.call(ConditionVariable$INVOKER$i$0$1$wait_ruby.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:646)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.UntilNode.interpret(UntilNode.java:120)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:192)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.IfNode.interpret(IfNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:176)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.VCallNode.interpret(VCallNode.java:88)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call19(RubyProc.java:249)
    at org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call(RubyProc.java:213)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"JRubyWorker-3" daemon prio=10 tid=0x00007f2bf4001000 nid=0x936 waiting on condition [0x00007f2c510d5000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000f7f76128> (a java.util.concurrent.Exchanger$Node)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.Exchanger.await(Exchanger.java:503)
    at java.util.concurrent.Exchanger.doExchange(Exchanger.java:358)
    at java.util.concurrent.Exchanger.exchange(Exchanger.java:619)
    at org.jruby.ext.fiber.ThreadFiber.yield(ThreadFiber.java:133)
    at org.jruby.ext.fiber.FiberMeta.yield(FiberMeta.java:15)
    at org.jruby.ext.fiber.FiberMeta$INVOKER$s$yield.call(FiberMeta$INVOKER$s$yield.gen)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at rubyjit.Celluloid::TaskFiber$$suspend_115E2BAB1ABD7D0327A3AB45C6E1194164C726F5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:35)
    at rubyjit.Celluloid::TaskFiber$$suspend_115E2BAB1ABD7D0327A3AB45C6E1194164C726F5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Module$$suspend_9B1EE1B05F76ECD96C282ED4F14B8F521E821EFD.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/task.rb:22)
    at rubyjit.Module$$suspend_9B1EE1B05F76ECD96C282ED4F14B8F521E821EFD.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/task.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Celluloid::Actor$$call_F98344E20976BFE26D9E5383CB4E929CC766D1BC.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/actor.rb:69)
    at rubyjit.Celluloid::Actor$$call_F98344E20976BFE26D9E5383CB4E929CC766D1BC.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/actor.rb)
    at org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:50)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:281)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:245)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:251)
    at org.jruby.runtime.callsite.CachingCallSite.callVarargs(CachingCallSite.java:115)
    at rubyjit.Celluloid::ActorProxy$$method_missing_E19D5818E6A50E585251B621505D08F95611310B.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/proxies/actor_proxy.rb:99)
    at rubyjit.Celluloid::ActorProxy$$method_missing_E19D5818E6A50E585251B621505D08F95611310B.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/proxies/actor_proxy.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:101)
    at org.jruby.javasupport.util.RuntimeHelpers$MethodMissingMethod.call(RuntimeHelpers.java:472)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:208)
    at org.jruby.runtime.callsite.CachingCallSite.callMethodMissing(CachingCallSite.java:401)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:323)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
    at rubyjit.Celluloid::IO::TCPServer$$accept_CFD5C62A19EC5288D1EAC75A12BF684B8A659189.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/tcp_server.rb:18)
    at rubyjit.Celluloid::IO::TCPServer$$accept_CFD5C62A19EC5288D1EAC75A12BF684B8A659189.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/tcp_server.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:141)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at tmp.server.block_0$RUBY$test(/tmp/server.rb:10)
    at tmp$server$block_0$RUBY$test.call(tmp$server$block_0$RUBY$test)
    at org.jruby.runtime.CompiledBlock19.yieldSpecificInternal(CompiledBlock19.java:121)
    at org.jruby.runtime.CompiledBlock19.yieldSpecific(CompiledBlock19.java:96)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.RubyKernel.loop(RubyKernel.java:1390)
    at org.jruby.RubyKernel$INVOKER$s$0$0$loop.call(RubyKernel$INVOKER$s$0$0$loop.gen)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:316)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:145)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
    at tmp.server.method__1$RUBY$test(/tmp/server.rb:9)
    at tmp$server$method__1$RUBY$test.call(tmp$server$method__1$RUBY$test)
    at org.jruby.RubyClass.finvoke(RubyClass.java:590)
    at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1667)
    at org.jruby.RubyKernel.send19(RubyKernel.java:2077)
    at org.jruby.RubyKernel$INVOKER$s$send19.call(RubyKernel$INVOKER$s$send19.gen)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:177)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:183)
    at org.jruby.ast.CallSpecialArgBlockPassNode.interpret(CallSpecialArgBlockPassNode.java:64)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:192)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:180)
    at org.jruby.runtime.Block.yieldArray(Block.java:146)
    at org.jruby.ext.fiber.ThreadFiber$1.run(ThreadFiber.java:37)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - <0x00000000f7f761e0> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"RubyThread-7: /tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/internal_pool.rb:45" daemon prio=10 tid=0x00007f2c58135800 nid=0x935 in Object.wait() [0x00007f2c512d6000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f7e77aa8> (a org.jruby.ext.thread.ConditionVariable)
    at java.lang.Object.wait(Object.java:460)
    at org.jruby.RubyThread$SleepTask.run(RubyThread.java:906)
    - locked <0x00000000f7e77aa8> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:922)
    at org.jruby.RubyThread.wait_timeout(RubyThread.java:1217)
    at org.jruby.ext.thread.ConditionVariable.wait_ruby(ConditionVariable.java:96)
    - locked <0x00000000f7e77aa8> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.ext.thread.ConditionVariable$INVOKER$i$0$1$wait_ruby.call(ConditionVariable$INVOKER$i$0$1$wait_ruby.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:646)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.UntilNode.interpret(UntilNode.java:120)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:192)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.IfNode.interpret(IfNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:176)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.VCallNode.interpret(VCallNode.java:88)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call19(RubyProc.java:249)
    at org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call(RubyProc.java:213)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"JRubyWorker-2" daemon prio=10 tid=0x00007f2bfc006800 nid=0x934 waiting on condition [0x00007f2c514d8000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000f7fab028> (a java.util.concurrent.Exchanger$Node)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.Exchanger.await(Exchanger.java:503)
    at java.util.concurrent.Exchanger.doExchange(Exchanger.java:358)
    at java.util.concurrent.Exchanger.exchange(Exchanger.java:619)
    at org.jruby.ext.fiber.ThreadFiber.yield(ThreadFiber.java:133)
    at org.jruby.ext.fiber.FiberMeta.yield(FiberMeta.java:15)
    at org.jruby.ext.fiber.FiberMeta$INVOKER$s$yield.call(FiberMeta$INVOKER$s$yield.gen)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at rubyjit.Celluloid::TaskFiber$$suspend_115E2BAB1ABD7D0327A3AB45C6E1194164C726F5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:35)
    at rubyjit.Celluloid::TaskFiber$$suspend_115E2BAB1ABD7D0327A3AB45C6E1194164C726F5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Module$$suspend_9B1EE1B05F76ECD96C282ED4F14B8F521E821EFD.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/task.rb:22)
    at rubyjit.Module$$suspend_9B1EE1B05F76ECD96C282ED4F14B8F521E821EFD.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/task.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Celluloid::IO::Reactor$$wait_58210B6548A6A5BB983894AB134429A40CECC286.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb:44)
    at rubyjit.Celluloid::IO::Reactor$$wait_58210B6548A6A5BB983894AB134429A40CECC286.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:221)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at rubyjit.Celluloid::IO::Reactor$$wait_readable_54AC6057B6BA13B23522D05752759EF2A228A2E9.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb:21)
    at rubyjit.Celluloid::IO::Reactor$$wait_readable_54AC6057B6BA13B23522D05752759EF2A228A2E9.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-io-0.12.0/lib/celluloid/io/reactor.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:201)
    at org.jruby.RubyClass.finvoke(RubyClass.java:630)
    at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1673)
    at org.jruby.RubyBasicObject$INVOKER$i$send19.call(RubyBasicObject$INVOKER$i$send19.gen)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:211)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:217)
    at org.jruby.runtime.callsite.CachingCallSite.callVarargs(CachingCallSite.java:114)
    at rubyjit.Celluloid::IO$$wait_readable_B8610D01B38C222273FAFBC4C6C4828D3D77A4C1.chained_0_rescue_1$RUBY$SYNTHETIC__file__(/tmp/jruby-1.7.0/lib/ruby/1.9/forwardable.rb:201)
    at rubyjit.Celluloid::IO$$wait_readable_B8610D01B38C222273FAFBC4C6C4828D3D77A4C1.__file__(/tmp/jruby-1.7.0/lib/ruby/1.9/forwardable.rb:200)
    at rubyjit.Celluloid::IO$$wait_readable_B8610D01B38C222273FAFBC4C6C4828D3D77A4C1.__file__(/tmp/jruby-1.7.0/lib/ruby/1.9/forwardable.rb)
    at org.jruby.ast.executable.AbstractScript.__file__(AbstractScript.java:42)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:201)
    at org.jruby.RubyClass.finvoke(RubyClass.java:630)
    at org.jruby.RubyBasicObject.send19(RubyBasicObject.java:1673)
    at org.jruby.RubyKernel.send19(RubyKernel.java:2081)
    at org.jruby.RubyKernel$INVOKER$s$send19.call(RubyKernel$INVOKER$s$send19.gen)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:211)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:217)
    at org.jruby.runtime.callsite.CachingCallSite.callVarargs(CachingCallSite.java:114)
    at rubyjit.Celluloid::SyncCall$$dispatch_2AD92FB2839D2345EB667A8B8CFEB6D81AAE92B5.chained_2_rescue_2$RUBY$SYNTHETIC__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/calls.rb:57)
    at rubyjit.Celluloid::SyncCall$$dispatch_2AD92FB2839D2345EB667A8B8CFEB6D81AAE92B5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/calls.rb:56)
    at rubyjit.Celluloid::SyncCall$$dispatch_2AD92FB2839D2345EB667A8B8CFEB6D81AAE92B5.__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/calls.rb)
    at org.jruby.internal.runtime.methods.JittedMethod.call(JittedMethod.java:181)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at rubyjit.Celluloid::Actor$$handle_message_ADF3C25E771A84EDDAD4B77876861FE6A921F909.block_0$RUBY$__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/actor.rb:323)
    at rubyjit$Celluloid::Actor$$handle_message_ADF3C25E771A84EDDAD4B77876861FE6A921F909$block_0$RUBY$__file__.call(rubyjit$Celluloid::Actor$$handle_message_ADF3C25E771A84EDDAD4B77876861FE6A921F909$block_0$RUBY$__file__)
    at org.jruby.runtime.CompiledBlock19.yieldSpecificInternal(CompiledBlock19.java:121)
    at org.jruby.runtime.CompiledBlock19.yieldSpecific(CompiledBlock19.java:96)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at rubyjit.Celluloid::TaskFiber$$initialize_E889B97045269175A6740461B40660C0E12A9F05.chained_1_rescue_1$RUBY$SYNTHETIC__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:22)
    at rubyjit.Celluloid::TaskFiber$$initialize_E889B97045269175A6740461B40660C0E12A9F05.chained_0_ensure_1$RUBY$__ensure__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb)
    at rubyjit.Celluloid::TaskFiber$$initialize_E889B97045269175A6740461B40660C0E12A9F05.block_0$RUBY$__file__(/tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/tasks/task_fiber.rb:21)
    at rubyjit$Celluloid::TaskFiber$$initialize_E889B97045269175A6740461B40660C0E12A9F05$block_0$RUBY$__file__.call(rubyjit$Celluloid::TaskFiber$$initialize_E889B97045269175A6740461B40660C0E12A9F05$block_0$RUBY$__file__)
    at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:163)
    at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:149)
    at org.jruby.runtime.Block.yieldArray(Block.java:146)
    at org.jruby.ext.fiber.ThreadFiber$1.run(ThreadFiber.java:37)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - <0x00000000f7faa3d8> (a java.util.concurrent.ThreadPoolExecutor$Worker)

"RubyThread-5: /tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/internal_pool.rb:45" daemon prio=10 tid=0x00007f2c08001000 nid=0x933 in Object.wait() [0x00007f2c516d8000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f7e75660> (a org.jruby.ext.thread.ConditionVariable)
    at java.lang.Object.wait(Object.java:460)
    at org.jruby.RubyThread$SleepTask.run(RubyThread.java:906)
    - locked <0x00000000f7e75660> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:922)
    at org.jruby.RubyThread.wait_timeout(RubyThread.java:1217)
    at org.jruby.ext.thread.ConditionVariable.wait_ruby(ConditionVariable.java:96)
    - locked <0x00000000f7e75660> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.ext.thread.ConditionVariable$INVOKER$i$0$1$wait_ruby.call(ConditionVariable$INVOKER$i$0$1$wait_ruby.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:646)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.UntilNode.interpret(UntilNode.java:120)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:192)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.IfNode.interpret(IfNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:176)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.VCallNode.interpret(VCallNode.java:88)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call19(RubyProc.java:249)
    at org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:134)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call(RubyProc.java:213)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"RubyThread-3: /tmp/jruby-1.7.0/lib/ruby/gems/shared/gems/celluloid-0.12.3/lib/celluloid/internal_pool.rb:45" daemon prio=10 tid=0x00007f2c5820f800 nid=0x931 in Object.wait() [0x00007f2c51ada000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f7ea8fd0> (a org.jruby.ext.thread.ConditionVariable)
    at java.lang.Object.wait(Object.java:460)
    at org.jruby.RubyThread$SleepTask.run(RubyThread.java:906)
    - locked <0x00000000f7ea8fd0> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:922)
    at org.jruby.RubyThread.wait_timeout(RubyThread.java:1217)
    at org.jruby.ext.thread.ConditionVariable.wait_ruby(ConditionVariable.java:96)
    - locked <0x00000000f7ea8fd0> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.ext.thread.ConditionVariable$INVOKER$i$0$1$wait_ruby.call(ConditionVariable$INVOKER$i$0$1$wait_ruby.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:646)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.UntilNode.interpret(UntilNode.java:120)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:182)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:192)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:168)
    at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.IfNode.interpret(IfNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:176)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
    at org.jruby.ast.VCallNode.interpret(VCallNode.java:88)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.ast.ZYieldNode.interpret(ZYieldNode.java:25)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call19(RubyProc.java:249)
    at org.jruby.RubyProc$INVOKER$i$0$0$call19.call(RubyProc$INVOKER$i$0$0$call19.gen)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:196)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
    at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:64)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.RescueNode.executeBody(RescueNode.java:228)
    at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:123)
    at org.jruby.ast.RescueNode.interpret(RescueNode.java:113)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:197)
    at org.jruby.runtime.Interpreted19Block.call(Interpreted19Block.java:128)
    at org.jruby.runtime.Block.call(Block.java:89)
    at org.jruby.RubyProc.call(RubyProc.java:261)
    at org.jruby.RubyProc.call(RubyProc.java:213)
    at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:98)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"JRubyJIT-2" daemon prio=10 tid=0x00007f2c584a6800 nid=0x930 waiting on condition [0x00007f2c51cde000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000f7fb6490> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:386)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"JRubyJIT-1" daemon prio=10 tid=0x00007f2c5849a000 nid=0x92c waiting on condition [0x00007f2c51edf000]
   java.lang.Thread.State: WAITING (parking)
    at sun.misc.Unsafe.park(Native Method)
    - parking to wait for  <0x00000000f7fb6490> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
    at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
    at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2043)
    at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:386)
    at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1043)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1103)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:679)

   Locked ownable synchronizers:
    - None

"Low Memory Detector" daemon prio=10 tid=0x00007f2c580a5800 nid=0x925 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread1" daemon prio=10 tid=0x00007f2c580a3000 nid=0x924 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"C2 CompilerThread0" daemon prio=10 tid=0x00007f2c580a0000 nid=0x923 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Signal Dispatcher" daemon prio=10 tid=0x00007f2c58092000 nid=0x922 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
    - None

"Finalizer" daemon prio=10 tid=0x00007f2c5807f800 nid=0x921 in Object.wait() [0x00007f2c53292000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e179ca88> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)
    - locked <0x00000000e179ca88> (a java.lang.ref.ReferenceQueue$Lock)
    at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:149)
    at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:177)

   Locked ownable synchronizers:
    - None

"Reference Handler" daemon prio=10 tid=0x00007f2c5807d800 nid=0x920 in Object.wait() [0x00007f2c53493000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000e179ca20> (a java.lang.ref.Reference$Lock)
    at java.lang.Object.wait(Object.java:502)
    at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:133)
    - locked <0x00000000e179ca20> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
    - None

"main" prio=10 tid=0x00007f2c58008000 nid=0x91a in Object.wait() [0x00007f2c5c5a5000]
   java.lang.Thread.State: WAITING (on object monitor)
    at java.lang.Object.wait(Native Method)
    - waiting on <0x00000000f7f75d78> (a org.jruby.ext.thread.ConditionVariable)
    at java.lang.Object.wait(Object.java:460)
    at org.jruby.RubyThread$SleepTask.run(RubyThread.java:906)
    - locked <0x00000000f7f75d78> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.RubyThread.executeBlockingTask(RubyThread.java:922)
    at org.jruby.RubyThread.wait_timeout(RubyThread.java:1217)
    at org.jruby.ext.thread.ConditionVariable.wait_ruby(ConditionVariable.java:96)
    - locked <0x00000000f7f75d78> (a org.jruby.ext.thread.ConditionVariable)
    at org.jruby.ext.thread.ConditionVariable$INVOKER$i$0$1$wait_ruby.call(ConditionVariable$INVOKER$i$0$1$wait_ruby.gen)
    at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:646)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:212)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:202)
    at org.jruby.ast.CallTwoArgNode.interpret(CallTwoArgNode.java:59)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.UntilNode.interpret(UntilNode.java:120)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.EnsureNode.interpret(EnsureNode.java:96)
    at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:161)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:184)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:143)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
    at org.jruby.ast.CallNoArgBlockNode.interpret(CallNoArgBlockNode.java:64)
    at org.jruby.ast.DAsgnNode.interpret(DAsgnNode.java:110)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_BLOCK(ASTInterpreter.java:112)
    at org.jruby.runtime.Interpreted19Block.evalBlockBody(Interpreted19Block.java:209)
    at org.jruby.runtime.Interpreted19Block.yield(Interpreted19Block.java:160)
    at org.jruby.runtime.Interpreted19Block.yieldSpecific(Interpreted19Block.java:133)
    at org.jruby.runtime.Block.yieldSpecific(Block.java:99)
    at org.jruby.RubyKernel.loop(RubyKernel.java:1390)
    at org.jruby.RubyKernel$INVOKER$s$0$0$loop.call(RubyKernel$INVOKER$s$0$0$loop.gen)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:143)
    at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:154)
    at org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
    at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:247)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:216)
    at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:211)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:217)
    at org.jruby.ast.CallSpecialArgBlockPassNode.interpret(CallSpecialArgBlockPassNode.java:66)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.ast.IfNode.interpret(IfNode.java:118)
    at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:105)
    at org.jruby.evaluator.ASTInterpreter.INTERPRET_METHOD(ASTInterpreter.java:75)
    at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:112)
    at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:158)
    at org.jruby.javasupport.util.RuntimeHelpers$MethodMissingMethod.call(RuntimeHelpers.java:472)
    at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:200)
    at org.jruby.runtime.callsite.CachingCallSite.callMethodMissing(CachingCallSite.java:393)
    at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:303)
    at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
    at tmp.server.__file__(/tmp/server.rb:17)
    at tmp.server.load(/tmp/server.rb)
    at org.jruby.Ruby.runScript(Ruby.java:770)
    at org.jruby.Ruby.runScript(Ruby.java:763)
    at org.jruby.Ruby.runNormally(Ruby.java:640)
    at org.jruby.Ruby.runFromMain(Ruby.java:489)
    at org.jruby.Main.doRunFromMain(Main.java:375)
    at org.jruby.Main.internalRun(Main.java:264)
    at org.jruby.Main.run(Main.java:230)
    at org.jruby.Main.run(Main.java:214)
    at org.jruby.Main.main(Main.java:194)

   Locked ownable synchronizers:
    - None

"VM Thread" prio=10 tid=0x00007f2c58077000 nid=0x91f runnable 

"GC task thread#0 (ParallelGC)" prio=10 tid=0x00007f2c58013000 nid=0x91b runnable 

"GC task thread#1 (ParallelGC)" prio=10 tid=0x00007f2c58014800 nid=0x91c runnable 

"GC task thread#2 (ParallelGC)" prio=10 tid=0x00007f2c58016800 nid=0x91d runnable 

"GC task thread#3 (ParallelGC)" prio=10 tid=0x00007f2c58018800 nid=0x91e runnable 

"VM Periodic Task Thread" prio=10 tid=0x00007f2c580b0000 nid=0x926 waiting on condition 

JNI global references: 1545

@bornmw
Copy link
Author

bornmw commented Nov 9, 2012

Smells like a very nice deadlock :)

@tarcieri
Copy link
Member

Is this not solved by increasing the backlog to the number of connections you intend to have hitting the server at the same time?

@tarcieri
Copy link
Member

Also note, this is probably an issue that should go here:

https://github.com/celluloid/celluloid-io/issues

I can move it over if you'd like

@DAddYE
Copy link

DAddYE commented Nov 22, 2012

Same problem for me, seems that read_block is taking forever.

@tarcieri
Copy link
Member

@DAddYE are you reproducing @bornmw's issue or something else?

@DAddYE
Copy link

DAddYE commented Nov 22, 2012

Yup I'm building a Redis Adapter for JRuby on both mri and jruby when we lock ownership or wait_readable it wait forever.

Here my workaround:

    def read_sock(length=Socket::SO_RCVBUF)
      retries = 0
      connection.acquire_ownership :r
      begin
        sock.read_nonblock(length)
      rescue Errno::EAGAIN
        # If I use here connection.wait_readable it loop forever
        if (retries+=1) < RETRIES
          sleep 0.01
          retry
        else
          abort Redis::TimeoutError.new
        end
      end
    rescue EOFError
      abort Redis::TimeoutError.new
    ensure
      connection.release_ownership :r
    end

@tarcieri
Copy link
Member

Moving this issue to the Celluloid::IO project:

celluloid/celluloid-io#34

@tarcieri
Copy link
Member

I believe this may be fixed now. Can you try to reproduce?

celluloid/celluloid-io#52

tarcieri added a commit that referenced this issue Nov 29, 2014
Expose addr method from UDPSocket.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants