-
-
Notifications
You must be signed in to change notification settings - Fork 942
Closed
Description
Environment
- jruby-9.1.13.0
- rails 4.2.9
- Darwin 14.5.0 Darwin Kernel Version 14.5.0: Sun Jun 4 21:40:08 PDT 2017; root:xnu-2782.70.3~1/RELEASE_X86_64 x86_64
Helper method
"#{c1}....#{c2}........" is a random string, which used to be an english sentence but most of the characters were replaced with dots. However the issue is not raised if C1 and C2 are dots ..
The arg 'string' was generated randomly but it only raises an Exception in certain conditions which are unknown
def jruby_scan_error(string)
('a'..'z').to_a.each do |c1|
('a'..'z').to_a.each do |c2|
begin
# Downcase is necessary to raise the issue
string.downcase.scan("#{c1}....#{c2}........")
rescue Exception => e
puts "c1: #{c1}\tc2: #{c2}\tError: #{e.class}:#{e.message}"
end
end
end
endExpected Behavior
- The following occurs in MRI ruby:
jruby_scan_error("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")
=> nilActual Behavior
- In Jruby-9.1.15.0:
jruby_scan_error("abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")
c1: d c2: r Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52
c1: m c2: d Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52
c1: m c2: o Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52
c1: o c2: c Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52
c1: o c2: r Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52
c1: x c2: o Error: Java::JavaLang::ArrayIndexOutOfBoundsException:52Backtrace
Java::JavaLang::ArrayIndexOutOfBoundsException: 52
from org.jruby.util.StringSupport.rb_memsearch_qs_utf8_hash(StringSupport.java:2307)
from org.jruby.util.StringSupport.rb_memsearch_qs_utf8(StringSupport.java:2346)
from org.jruby.util.StringSupport.memsearch(StringSupport.java:1851)
from org.jruby.RubyString.strseqIndex(RubyString.java:2757)
from org.jruby.RubyString.patternSearch(RubyString.java:3881)
from org.jruby.RubyString.scanOnce(RubyString.java:3841)
from org.jruby.RubyString.scan19(RubyString.java:3809)
from org.jruby.RubyString$INVOKER$i$1$0$scan19.call(RubyString$INVOKER$i$1$0$scan19.gen)
from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:384)
from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
from org.jruby.ir.interpreter.InterpreterEngine.processCall(InterpreterEngine.java:314)
from org.jruby.ir.interpreter.StartupInterpreterEngine.interpret(StartupInterpreterEngine.java:73)
from org.jruby.ir.interpreter.Interpreter.INTERPRET_EVAL(Interpreter.java:122)
from org.jruby.ir.interpreter.Interpreter.evalCommon(Interpreter.java:176)
from org.jruby.ir.interpreter.Interpreter.evalWithBinding(Interpreter.java:200)
... 160 levels...
from org.jruby.internal.runtime.methods.JavaMethod$JavaMethodOneOrNBlock.call(JavaMethod.java:384)
from org.jruby.internal.runtime.methods.AliasMethod.call(AliasMethod.java:61)
from org.jruby.runtime.callsite.CachingCallSite.cacheAndCall(CachingCallSite.java:338)
from org.jruby.runtime.callsite.CachingCallSite.call(CachingCallSite.java:163)
from bin.rails.invokeOther5:require(bin/rails:4)
from bin.rails.RUBY$script(bin/rails:4)
from java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:625)
from org.jruby.ir.Compiler$1.load(Compiler.java:95)
from org.jruby.Ruby.runScript(Ruby.java:828)
from org.jruby.Ruby.runNormally(Ruby.java:747)
from org.jruby.Ruby.runNormally(Ruby.java:765)
from org.jruby.Ruby.runFromMain(Ruby.java:578)
from org.jruby.Main.doRunFromMain(Main.java:417)
from org.jruby.Main.internalRun(Main.java:305)
from org.jruby.Main.run(Main.java:232)
from org.jruby.Main.main(Main.java:204)Reactions are currently unavailable