Created
May 31, 2010 17:41
-
-
Save nicksieger/420062 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ 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