Skip to content

Instantly share code, notes, and snippets.

@headius
Last active December 15, 2015 02:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save headius/5184869 to your computer and use it in GitHub Desktop.
Save headius/5184869 to your computer and use it in GitHub Desktop.
What a Ruby trace from JRuby looks like at the JVM level.
Completely transformed
======================
ext-jruby-local ~/projects/jruby $ jruby -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; raise; end; end; foo"
RuntimeError: No current exception
__singleton__ at -e:1
baz at -e:1
bar at (eval):1
eval at org/jruby/RubyKernel.java:1067
bar at -e:1
foo at -e:1
times at org/jruby/RubyFixnum.java:271
foo at -e:1
(root) at -e:1
Partially transformed
=====================
ext-jruby-local ~/projects/jruby $ jruby -Xbacktrace.style=raw -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; raise; end; end; foo"
RuntimeError: No current exception
getStackTrace at java/lang/Thread.java:1567
getBacktraceData at org/jruby/runtime/backtrace/TraceType.java:171
getBacktrace at org/jruby/runtime/backtrace/TraceType.java:39
prepareBacktrace at org/jruby/RubyException.java:223
preRaise at org/jruby/exceptions/RaiseException.java:214
preRaise at org/jruby/exceptions/RaiseException.java:195
<init> at org/jruby/exceptions/RaiseException.java:112
raise at org/jruby/RubyKernel.java:955
rbRaise at org/jruby/java/addons/KernelJavaAddons.java:45
call at org/jruby/internal/runtime/methods/DynamicMethod.java:201
call at org/jruby/internal/runtime/methods/DynamicMethod.java:197
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306
call at org/jruby/runtime/callsite/CachingCallSite.java:136
__singleton__ at -e:1
__singleton__ at ruby/-e:1
baz at -e:1
baz at ruby/-e:1
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306
call at org/jruby/runtime/callsite/CachingCallSite.java:136
interpret at org/jruby/ast/VCallNode.java:88
interpret at org/jruby/ast/NewlineNode.java:105
interpret at org/jruby/ast/RootNode.java:129
INTERPRET_EVAL at org/jruby/evaluator/ASTInterpreter.java:96
evalWithBinding at org/jruby/evaluator/ASTInterpreter.java:185
evalCommon at org/jruby/RubyKernel.java:1104
eval19 at org/jruby/RubyKernel.java:1067
call at org/jruby/internal/runtime/methods/DynamicMethod.java:209
call at org/jruby/internal/runtime/methods/DynamicMethod.java:205
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:326
call at org/jruby/runtime/callsite/CachingCallSite.java:170
bar at -e:1
bar at ruby/-e:1
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306
call at org/jruby/runtime/callsite/CachingCallSite.java:136
foo at -e:1
foo at ruby/-e:1
yield at org/jruby/runtime/CompiledBlock19.java:137
yield at org/jruby/runtime/Block.java:130
times at org/jruby/RubyFixnum.java:271
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:316
callBlock at org/jruby/runtime/callsite/CachingCallSite.java:145
callIter at org/jruby/runtime/callsite/CachingCallSite.java:154
foo at -e:1
foo at ruby/-e:1
cacheAndCall at org/jruby/runtime/callsite/CachingCallSite.java:306
call at org/jruby/runtime/callsite/CachingCallSite.java:136
(root) at -e:1
(root) at ruby/-e:1
runScript at org/jruby/Ruby.java:816
runScript at org/jruby/Ruby.java:809
runNormally at org/jruby/Ruby.java:680
runFromMain at org/jruby/Ruby.java:529
doRunFromMain at org/jruby/Main.java:390
internalRun at org/jruby/Main.java:279
run at org/jruby/Main.java:221
main at org/jruby/Main.java:201
Original trace
==============
ext-jruby-local ~/projects/jruby $ jruby -e "def foo; 1.times { bar }; end; def bar; eval 'baz'; end; def baz; class << self; java.lang.Thread.dumpStack; end; end; foo"
java.lang.Exception: Stack trace
at java.lang.Thread.dumpStack(Thread.java:1342)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.jruby.javasupport.JavaMethod.invokeDirectWithExceptionHandling(JavaMethod.java:440)
at org.jruby.javasupport.JavaMethod.invokeStaticDirect(JavaMethod.java:362)
at org.jruby.java.invokers.StaticMethodInvoker.call(StaticMethodInvoker.java:50)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at ruby.__dash_e__.sclass_3$RUBY$__singleton__(-e:1)
at ruby.__dash_e__.method__2$RUBY$baz(-e:1)
at ruby$__dash_e__$method__2$RUBY$baz.call(ruby$__dash_e__$method__2$RUBY$baz)
at ruby$__dash_e__$method__2$RUBY$baz.call(ruby$__dash_e__$method__2$RUBY$baz)
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.RootNode.interpret(RootNode.java:129)
at org.jruby.evaluator.ASTInterpreter.INTERPRET_EVAL(ASTInterpreter.java:96)
at org.jruby.evaluator.ASTInterpreter.evalWithBinding(ASTInterpreter.java:185)
at org.jruby.RubyKernel.evalCommon(RubyKernel.java:1104)
at org.jruby.RubyKernel.eval19(RubyKernel.java:1067)
at org.jruby.RubyKernel$INVOKER$s$0$3$eval19.call(RubyKernel$INVOKER$s$0$3$eval19.gen)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:209)
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:205)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:326)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170)
at ruby.__dash_e__.method__1$RUBY$bar(-e:1)
at ruby$__dash_e__$method__1$RUBY$bar.call(ruby$__dash_e__$method__1$RUBY$bar)
at ruby$__dash_e__$method__1$RUBY$bar.call(ruby$__dash_e__$method__1$RUBY$bar)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at ruby.__dash_e__.block_0$RUBY$foo(-e:1)
at ruby$__dash_e__$block_0$RUBY$foo.call(ruby$__dash_e__$block_0$RUBY$foo)
at org.jruby.runtime.CompiledBlock19.yield(CompiledBlock19.java:137)
at org.jruby.runtime.Block.yield(Block.java:130)
at org.jruby.RubyFixnum.times(RubyFixnum.java:271)
at org.jruby.RubyFixnum$INVOKER$i$0$0$times.call(RubyFixnum$INVOKER$i$0$0$times.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 ruby.__dash_e__.method__0$RUBY$foo(-e:1)
at ruby$__dash_e__$method__0$RUBY$foo.call(ruby$__dash_e__$method__0$RUBY$foo)
at ruby$__dash_e__$method__0$RUBY$foo.call(ruby$__dash_e__$method__0$RUBY$foo)
at org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:306)
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:136)
at ruby.__dash_e__.__file__(-e:1)
at ruby.__dash_e__.load(-e)
at org.jruby.Ruby.runScript(Ruby.java:816)
at org.jruby.Ruby.runScript(Ruby.java:809)
at org.jruby.Ruby.runNormally(Ruby.java:680)
at org.jruby.Ruby.runFromMain(Ruby.java:529)
at org.jruby.Main.doRunFromMain(Main.java:390)
at org.jruby.Main.internalRun(Main.java:279)
at org.jruby.Main.run(Main.java:221)
at org.jruby.Main.main(Main.java:201)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment