Skip to content

Instantly share code, notes, and snippets.

@nicksieger
Created May 31, 2010 17:41
Show Gist options
  • Select an option

  • Save nicksieger/420062 to your computer and use it in GitHub Desktop.

Select an option

Save nicksieger/420062 to your computer and use it in GitHub Desktop.
require 'drb/drb'
# Run as '$0 server' to start the DRb server
if ARGV.first && "server" =~ Regexp.new(ARGV.first)
class Greeter
def greet(stream)
@count ||= 0
@count += 1
stream.puts "hi! [#@count]"
end
end
DRb.start_service("druby://127.0.0.1:3434", Greeter.new)
DRb.thread.join
else # Run the client
DRb.start_service("druby://localhost:0") # this allows Ruby to pass streams over DRb
greeter = DRbObject.new_with_uri "druby://127.0.0.1:3434"
greeter.greet($stdout)
end
$ jruby drb_stream.rb server &
[1] 25349
$ jruby drb_stream.rb
hi! [5]
^\2010-05-31 12:33:46
Full thread dump Java HotSpot(TM) 64-Bit Server VM (16.3-b01-279 mixed mode):
"Thread-1" daemon prio=5 tid=102bd2000 nid=0x12f92c000 runnable [12f928000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.FileDispatcher.read0(Native Method)
at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21)
at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:233)
at sun.nio.ch.IOUtil.read(IOUtil.java:206)
at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:236)
- locked <1066840a0> (a java.lang.Object)
at org.jruby.util.io.ChannelStream.refillBuffer(ChannelStream.java:169)
at org.jruby.util.io.ChannelStream.bufferedRead(ChannelStream.java:913)
at org.jruby.util.io.ChannelStream.bufferedRead(ChannelStream.java:875)
at org.jruby.util.io.ChannelStream.fread(ChannelStream.java:1267)
- locked <1066841e0> (a org.jruby.util.io.ChannelStream)
at org.jruby.RubyIO.readNotAll(RubyIO.java:2703)
at org.jruby.RubyIO.read(RubyIO.java:2629)
at org.jruby.RubyIO$i_method_multi$RUBYINVOKER$read.call(org/jruby/RubyIO$i_method_multi$RUBYINVOKER$read.gen:65535)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:146)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:199)
at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:118)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
at org.jruby.ast.BeginNode.interpret(BeginNode.java:83)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:180)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:172)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:146)
at org.jruby.ast.FCallOneArgNode.interpret(FCallOneArgNode.java:36)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:180)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:172)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:146)
at org.jruby.ast.CallOneArgNode.interpret(CallOneArgNode.java:57)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.ToAryNode.interpret(ToAryNode.java:69)
at org.jruby.ast.MultipleAsgnNode.interpret(MultipleAsgnNode.java:127)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.ast.RescueNode.executeBody(RescueNode.java:199)
at org.jruby.ast.RescueNode.interpretWithJavaExceptions(RescueNode.java:118)
at org.jruby.ast.RescueNode.interpret(RescueNode.java:110)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.ToAryNode.interpret(ToAryNode.java:69)
at org.jruby.ast.MultipleAsgnNode.interpret(MultipleAsgnNode.java:127)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
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:104)
at org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:373)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:346)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:303)
at org.jruby.runtime.Block.yield(Block.java:194)
at org.jruby.RubyKernel.loop_1_9(RubyKernel.java:1297)
at org.jruby.RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.call(org/jruby/RubyKernel$s_method_0_0$RUBYFRAMEDINVOKER$loop_1_9.gen:65535)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:299)
at org.jruby.runtime.callsite.CachingCallSite.callBlock(CachingCallSite.java:117)
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:132)
at org.jruby.ast.FCallNoArgBlockNode.interpret(FCallNoArgBlockNode.java:32)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:373)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:327)
at org.jruby.runtime.BlockBody.call(BlockBody.java:78)
at org.jruby.runtime.Block.call(Block.java:89)
at org.jruby.RubyProc.call(RubyProc.java:256)
at org.jruby.RubyProc.call(RubyProc.java:239)
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:94)
at java.lang.Thread.run(Thread.java:637)
"Thread-0" daemon prio=5 tid=1018be000 nid=0x12f829000 runnable [12f827000]
java.lang.Thread.State: RUNNABLE
at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:136)
at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:69)
at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:69)
- locked <106683768> (a sun.nio.ch.Util$1)
- locked <106683750> (a java.util.Collections$UnmodifiableSet)
- locked <1066830e0> (a sun.nio.ch.KQueueSelectorImpl)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:80)
at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:84)
at org.jruby.RubyThread.select(RubyThread.java:892)
- locked <10665b4e0> (a java.lang.Object)
at org.jruby.RubyThread.select(RubyThread.java:872)
at org.jruby.ext.socket.RubyTCPServer.accept(RubyTCPServer.java:172)
at org.jruby.ext.socket.RubyTCPServer$i_method_0_0$RUBYINVOKER$accept.call(org/jruby/ext/socket/RubyTCPServer$i_method_0_0$RUBYINVOKER$accept.gen:65535)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.LocalAsgnNode.interpret(LocalAsgnNode.java:123)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
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:104)
at org.jruby.ast.BlockNode.interpret(BlockNode.java:71)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.CallNoArgNode.interpret(CallNoArgNode.java:61)
at org.jruby.ast.CallOneArgBlockNode.interpret(CallOneArgBlockNode.java:60)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.internal.runtime.methods.InterpretedMethod.call(InterpretedMethod.java:139)
at org.jruby.internal.runtime.methods.DefaultMethod.call(DefaultMethod.java:156)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:106)
at org.jruby.ast.VCallNode.interpret(VCallNode.java:85)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
at org.jruby.ast.WhileNode.interpret(WhileNode.java:131)
at org.jruby.ast.NewlineNode.interpret(NewlineNode.java:104)
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:104)
at org.jruby.runtime.InterpretedBlock.evalBlockBody(InterpretedBlock.java:373)
at org.jruby.runtime.InterpretedBlock.yield(InterpretedBlock.java:327)
at org.jruby.runtime.BlockBody.call(BlockBody.java:78)
at org.jruby.runtime.Block.call(Block.java:89)
at org.jruby.RubyProc.call(RubyProc.java:256)
at org.jruby.RubyProc.call(RubyProc.java:239)
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:94)
at java.lang.Thread.run(Thread.java:637)
"Low Memory Detector" daemon prio=5 tid=101896000 nid=0x12f00d000 runnable [00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread1" daemon prio=9 tid=101895000 nid=0x12ef0a000 waiting on condition [00000000]
java.lang.Thread.State: RUNNABLE
"CompilerThread0" daemon prio=9 tid=101894800 nid=0x12ee07000 waiting on condition [00000000]
java.lang.Thread.State: RUNNABLE
"Signal Dispatcher" daemon prio=9 tid=10281f000 nid=0x12ed04000 waiting on condition [00000000]
java.lang.Thread.State: RUNNABLE
"Surrogate Locker Thread (CMS)" daemon prio=5 tid=10281e000 nid=0x12ec01000 waiting on condition [00000000]
java.lang.Thread.State: RUNNABLE
"Finalizer" daemon prio=8 tid=102804000 nid=0x12df89000 in Object.wait() [12df88000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <1060111e0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
- locked <1060111e0> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
"Reference Handler" daemon prio=10 tid=101893800 nid=0x12de86000 in Object.wait() [12de85000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <106011048> (a java.lang.ref.Reference$Lock)
at java.lang.Object.wait(Object.java:485)
at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
- locked <106011048> (a java.lang.ref.Reference$Lock)
"main" prio=5 tid=102800800 nid=0x100501000 waiting for monitor entry [100500000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.jruby.util.io.ChannelStream.finalize(ChannelStream.java:1143)
- waiting to lock <1066841e0> (a org.jruby.util.io.ChannelStream)
at org.jruby.Ruby.tearDown(Ruby.java:2834)
- locked <106069538> (a java.lang.Object)
at org.jruby.Ruby.tearDown(Ruby.java:2787)
at org.jruby.Main.run(Main.java:288)
at org.jruby.Main.run(Main.java:128)
at org.jruby.Main.main(Main.java:97)
"VM Thread" prio=9 tid=101891000 nid=0x12dd83000 runnable
"Gang worker#0 (Parallel GC Threads)" prio=9 tid=101800800 nid=0x102201000 runnable
"Gang worker#1 (Parallel GC Threads)" prio=9 tid=101801000 nid=0x102304000 runnable
"Concurrent Mark-Sweep GC Thread" prio=9 tid=101841000 nid=0x12da8b000 runnable
"VM Periodic Task Thread" prio=10 tid=101897800 nid=0x12f110000 waiting on condition
"Exception Catcher Thread" prio=10 tid=102801800 nid=0x10171b000 runnable
JNI global references: 735
Heap
par new generation total 19136K, used 8903K [106010000, 1074d0000, 1089a0000)
eden space 17024K, 52% used [106010000, 1068c1c58, 1070b0000)
from space 2112K, 0% used [1070b0000, 1070b0000, 1072c0000)
to space 2112K, 0% used [1072c0000, 1072c0000, 1074d0000)
concurrent mark-sweep generation total 63872K, used 0K [1089a0000, 10c800000, 125410000)
concurrent-mark-sweep perm gen total 21248K, used 19926K [125410000, 1268d0000, 12a810000)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment