Last active
September 9, 2019 11:12
-
-
Save jsvd/0a70cd10bde29f51885733e9fb2967df 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
% gem list | grep jrjackson | |
jrjackson (0.4.9 java, 0.4.8 java, 0.4.7 java) | |
% ruby -v | |
jruby 9.2.5.0 (2.5.0) 2018-12-06 6d5a228 OpenJDK 64-Bit Server VM 11.0.1+13 on 11.0.1+13 +jit [darwin-x86_64] |
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 'jrjackson' | |
Thread.abort_on_exception = true | |
now = Time.now | |
# we need multi threading to trigger this issue | |
num_threads = 100 | |
threads = num_threads.times.map do |i| | |
Thread.new do | |
# this is OK: | |
# loop { JrJackson::Json.dump(now) } | |
# but this causes exception shown below: | |
loop { JrJackson::Json.dump("a" => now) } | |
end | |
end | |
threads.each(&:join) |
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
% ruby jrjackon_exception.rb | |
warning: thread "Ruby-0-Thread-69: jrjackon_exception.rb:1" terminated with exception (report_on_exception is true): | |
java.lang.ArrayIndexOutOfBoundsException: Index 964 out of bounds for length 13 | |
at java.base/sun.util.calendar.BaseCalendar.getCalendarDateFromFixedDate(BaseCalendar.java:453) | |
at java.base/java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2394) | |
at java.base/java.util.GregorianCalendar.computeFields(GregorianCalendar.java:2309) | |
at java.base/java.util.Calendar.setTimeInMillis(Calendar.java:1834) | |
at java.base/java.util.Calendar.setTime(Calendar.java:1800) | |
at java.base/java.text.SimpleDateFormat.format(SimpleDateFormat.java:974) | |
at java.base/java.text.SimpleDateFormat.format(SimpleDateFormat.java:967) | |
at java.base/java.text.DateFormat.format(DateFormat.java:374) | |
at com.jrjackson.RubyAnySerializer.serializeTime(RubyAnySerializer.java:244) | |
at com.jrjackson.RubyAnySerializer.serialize(RubyAnySerializer.java:196) | |
at com.jrjackson.RubyAnySerializer.serializeHash(RubyAnySerializer.java:226) | |
at com.jrjackson.RubyAnySerializer.serialize(RubyAnySerializer.java:162) | |
at com.jrjackson.JrJacksonBase.generate(JrJacksonBase.java:70) | |
at com.jrjackson.JrJacksonBase$INVOKER$s$0$1$generate.call(JrJacksonBase$INVOKER$s$0$1$generate.gen) | |
at org.jruby.internal.runtime.methods.JavaMethod$JavaMethodN.call(JavaMethod.java:801) | |
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:207) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:201) | |
at Users.joaoduarte.$_dot_rvm.gems.jruby_minus_9_dot_2_dot_5_dot_0.gems.jrjackson_minus_0_dot_4_dot_9_minus_java.lib.jrjackson.jrjackson.invokeOther27:generate(/Users/joaoduarte/.rvm/gems/jruby-9.2.5.0/gems/jrjackson-0.4.9-java/lib/jrjackson/jrjackson.rb:61) | |
at Users.joaoduarte.$_dot_rvm.gems.jruby_minus_9_dot_2_dot_5_dot_0.gems.jrjackson_minus_0_dot_4_dot_9_minus_java.lib.jrjackson.jrjackson.RUBY$method$dump$0(/Users/joaoduarte/.rvm/gems/jruby-9.2.5.0/gems/jrjackson-0.4.9-java/lib/jrjackson/jrjackson.rb:61) | |
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:91) | |
at org.jruby.internal.runtime.methods.CompiledIRMethod.call(CompiledIRMethod.java:114) | |
at org.jruby.internal.runtime.methods.MixedModeIRMethod.call(MixedModeIRMethod.java:156) | |
at org.jruby.internal.runtime.methods.DynamicMethod.call(DynamicMethod.java:199) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:170) | |
at jrjackon_exception.invokeOther1:dump(jrjackon_exception.rb:9) | |
at jrjackon_exception.RUBY$block$\=jrjackon_exception\,rb$2(jrjackon_exception.rb:9) | |
at org.jruby.runtime.CompiledIRBlockBody.yieldDirect(CompiledIRBlockBody.java:146) | |
at org.jruby.runtime.IRBlockBody.yieldSpecific(IRBlockBody.java:85) | |
at org.jruby.runtime.Block.yieldSpecific(Block.java:134) | |
at org.jruby.RubyKernel.loop(RubyKernel.java:1415) | |
at org.jruby.RubyKernel$INVOKER$s$0$0$loop.call(RubyKernel$INVOKER$s$0$0$loop.gen) | |
at org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:149) | |
at org.jruby.runtime.callsite.CachingCallSite.callIter(CachingCallSite.java:158) | |
at jrjackon_exception.invokeOther3:loop(jrjackon_exception.rb:9) | |
at jrjackon_exception.RUBY$block$\=jrjackon_exception\,rb$1(jrjackon_exception.rb:9) | |
at org.jruby.runtime.CompiledIRBlockBody.callDirect(CompiledIRBlockBody.java:136) | |
at org.jruby.runtime.IRBlockBody.call(IRBlockBody.java:77) | |
at org.jruby.runtime.Block.call(Block.java:124) | |
at org.jruby.RubyProc.call(RubyProc.java:286) | |
at org.jruby.RubyProc.call(RubyProc.java:270) | |
at org.jruby.internal.runtime.RubyRunnable.run(RubyRunnable.java:105) | |
at java.base/java.lang.Thread.run(Thread.java:834) | |
Unhandled Java exception: java.lang.ArrayIndexOutOfBoundsException: Index 964 out of bounds for length 13 | |
java.lang.ArrayIndexOutOfBoundsException: Index 964 out of bounds for length 13 | |
getCalendarDateFromFixedDate at sun/util/calendar/BaseCalendar.java:453 | |
computeFields at java/util/GregorianCalendar.java:2394 | |
computeFields at java/util/GregorianCalendar.java:2309 | |
setTimeInMillis at java/util/Calendar.java:1834 | |
setTime at java/util/Calendar.java:1800 | |
format at java/text/SimpleDateFormat.java:974 | |
format at java/text/SimpleDateFormat.java:967 | |
format at java/text/DateFormat.java:374 | |
serializeTime at com/jrjackson/RubyAnySerializer.java:244 | |
serialize at com/jrjackson/RubyAnySerializer.java:196 | |
serializeHash at com/jrjackson/RubyAnySerializer.java:226 | |
serialize at com/jrjackson/RubyAnySerializer.java:162 | |
generate at com/jrjackson/JrJacksonBase.java:70 | |
call at com/jrjackson/JrJacksonBase$INVOKER$s$0$1$generate.gen:-1 | |
call at org/jruby/internal/runtime/methods/JavaMethod.java:801 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:207 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:201 | |
invokeOther27:generate at Users/joaoduarte/$_dot_rvm/gems/jruby_minus_9_dot_2_dot_5_dot_0/gems/jrjackson_minus_0_dot_4_dot_9_minus_java/lib/jrjackson//Users/joaoduarte/.rvm/gems/jruby-9.2.5.0/gems/jrjackson-0.4.9-java/lib/jrjackson/jrjackson.rb:61 | |
dump at /Users/joaoduarte/.rvm/gems/jruby-9.2.5.0/gems/jrjackson-0.4.9-java/lib/jrjackson/jrjackson.rb:61 | |
call at org/jruby/internal/runtime/methods/CompiledIRMethod.java:91 | |
call at org/jruby/internal/runtime/methods/CompiledIRMethod.java:114 | |
call at org/jruby/internal/runtime/methods/MixedModeIRMethod.java:156 | |
call at org/jruby/internal/runtime/methods/DynamicMethod.java:199 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:170 | |
invokeOther1:dump at jrjackon_exception.rb:9 | |
jrjackon_exception.rb at jrjackon_exception.rb:9 | |
yieldDirect at org/jruby/runtime/CompiledIRBlockBody.java:146 | |
yieldSpecific at org/jruby/runtime/IRBlockBody.java:85 | |
yieldSpecific at org/jruby/runtime/Block.java:134 | |
loop at org/jruby/RubyKernel.java:1415 | |
call at org/jruby/RubyKernel$INVOKER$s$0$0$loop.gen:-1 | |
call at org/jruby/runtime/callsite/CachingCallSite.java:149 | |
callIter at org/jruby/runtime/callsite/CachingCallSite.java:158 | |
invokeOther3:loop at jrjackon_exception.rb:9 | |
jrjackon_exception.rb at jrjackon_exception.rb:9 | |
callDirect at org/jruby/runtime/CompiledIRBlockBody.java:136 | |
call at org/jruby/runtime/IRBlockBody.java:77 | |
call at org/jruby/runtime/Block.java:124 | |
call at org/jruby/RubyProc.java:286 | |
call at org/jruby/RubyProc.java:270 | |
run at org/jruby/internal/runtime/RubyRunnable.java:105 | |
run at java/lang/Thread.java:834 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment