Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: JRuby 1.0.0
-
Fix Version/s: JRuby 1.0.1, JRuby 1.1b1
-
Component/s: None
-
Labels:None
-
Environment:Windows Vista Business, JDK 1.6
Description
Form's with enctype="multipart/form-data" fail in JRuby/Rails
127.0.0.1 - - [16/Jul/2007:01:34:56 PDT] "GET /upload HTTP/1.1" 200 483
- -> /upload
#<NativeException: java.lang.StringIndexOutOfBoundsException: String index out of range: -530>
["String.java:398:in `java.lang.String.checkBounds'", "String.java:443:in `java.lang.String.<init>'", "ByteList.java:541:in `org.jruby.util.ByteList.toString'", "ByteList.java:524:in `org.jruby.util.ByteList.toString'", "RubyString.java:345:in `org.jruby.RubyString.toString'", "RubyRegexp.java:419:in `org.jruby.RubyRegexp.match'", "RubyRegexp.java:436:in `org.jruby.RubyRegexp.match_m'", "null:-1:in `org.jruby.RubyRegexpInvokermatch_m1.call'", "FastInvocationCallback.java:49:in `org.jruby.runtime.callback.FastInvocationCallback.execute'", "SimpleCallbackMethod.java:81:in `org.jruby.internal.runtime.methods.SimpleCallbackMethod.call'", "EvaluationState.java:568:in `org.jruby.evaluator.EvaluationState.callNode'", "EvaluationState.java:207:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:270:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1706:in `org.jruby.evaluator.EvaluationState.untilNode'", "EvaluationState.java:378:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "Block.java:220:in `org.jruby.runtime.Block.yield'", "Block.java:186:in `org.jruby.runtime.Block.yield'", "RubyKernel.java:913:in `org.jruby.RubyKernel.loop'", "null:-1:in `org.jruby.RubyKernelInvokerSloop0.call'", "InvocationCallback.java:49:in `org.jruby.runtime.callback.InvocationCallback.execute'", "FullFunctionCallbackMethod.java:78:in `org.jruby.internal.runtime.methods.FullFunctionCallbackMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "RubyObject.java:564:in `org.jruby.RubyObject.callMethod'", "EvaluationState.java:1030:in `org.jruby.evaluator.EvaluationState.fCallNode'", "EvaluationState.java:253:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:1023:in `org.jruby.evaluator.EvaluationState.fCallNode'", "EvaluationState.java:253:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1219:in `org.jruby.evaluator.EvaluationState.instAsgnNode'", "EvaluationState.java:280:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:1023:in `org.jruby.evaluator.EvaluationState.fCallNode'", "EvaluationState.java:253:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "RubyObject.java:564:in `org.jruby.RubyObject.callMethod'", "RubyObject.java:449:in `org.jruby.RubyObject.callMethod'", "RubyClass.java:287:in `org.jruby.RubyClass.newInstance'", "null:-1:in `org.jruby.RubyClassInvokernewInstancexx1.call'", "InvocationCallback.java:49:in `org.jruby.runtime.callback.InvocationCallback.execute'", "FullFunctionCallbackMethod.java:78:in `org.jruby.internal.runtime.methods.FullFunctionCallbackMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:568:in `org.jruby.evaluator.EvaluationState.callNode'", "EvaluationState.java:207:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:2190:in `org.jruby.evaluator.EvaluationState.setupArgs'", "EvaluationState.java:549:in `org.jruby.evaluator.EvaluationState.callNode'", "EvaluationState.java:207:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1518:in `org.jruby.evaluator.EvaluationState.rescueNode'", "EvaluationState.java:350:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:1023:in `org.jruby.evaluator.EvaluationState.fCallNode'", "EvaluationState.java:253:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:270:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:984:in `org.jruby.evaluator.EvaluationState.ensureNode'", "EvaluationState.java:247:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:568:in `org.jruby.evaluator.EvaluationState.callNode'", "EvaluationState.java:207:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:568:in `org.jruby.evaluator.EvaluationState.callNode'", "EvaluationState.java:207:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1518:in `org.jruby.evaluator.EvaluationState.rescueNode'", "EvaluationState.java:350:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:984:in `org.jruby.evaluator.EvaluationState.ensureNode'", "EvaluationState.java:247:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1770:in `org.jruby.evaluator.EvaluationState.whileNode'", "EvaluationState.java:387:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "DefaultMethod.java:135:in `org.jruby.internal.runtime.methods.DefaultMethod.internalCall'", "DynamicMethod.java:79:in `org.jruby.internal.runtime.methods.DynamicMethod.call'", "EvaluationState.java:1023:in `org.jruby.evaluator.EvaluationState.fCallNode'", "EvaluationState.java:253:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:531:in `org.jruby.evaluator.EvaluationState.blockNode'", "EvaluationState.java:201:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:1518:in `org.jruby.evaluator.EvaluationState.rescueNode'", "EvaluationState.java:350:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:984:in `org.jruby.evaluator.EvaluationState.ensureNode'", "EvaluationState.java:247:in `org.jruby.evaluator.EvaluationState.evalInternal'", "EvaluationState.java:164:in `org.jruby.evaluator.EvaluationState.eval'", "Block.java:220:in `org.jruby.runtime.Block.yield'", "Block.java:174:in `org.jruby.runtime.Block.call'", "RubyProc.java:173:in `org.jruby.RubyProc.call'", "RubyProc.java:148:in `org.jruby.RubyProc.call'", "RubyNativeThread.java:73:in `org.jruby.internal.runtime.RubyNativeThread.run'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/cgi_ext/raw_post_data_fix.rb:38:in `loop'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/1.8/cgi.rb:1067:in `read_multipart'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/actionpack-1.13.3/lib/action_controller/cgi_ext/raw_post_data_fix.rb:38:in `initialize_query'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:33:in `initialize'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:118:in `new'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:118:in `handle_dispatch'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/webrick_server.rb:81:in `service'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/1.8/webrick/httpserver.rb:104:in `service'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/1.8/webrick/httpserver.rb:65:in `run'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'", "C:/Apps/netbeans/NetBeans 6.0M10/ruby1/jruby-1.0/lib/ruby/1.8/webrick/server.rb:95:in `start'"]
[2007-07-16 01:35:06] ERROR `/upload/done' not found.
127.0.0.1 - - [16/Jul/2007:01:35:06 PDT] "POST /upload/done HTTP/1.1" 404 281
http://localhost:3000/upload -> /upload/done
For me, when I invoke under Jetty (JDK 1.5.0_12, win32, JRuby 1.0 with a file form field:
2007-07-18 16:38:34.824:/touchrails:INFO: rails: Failed to invoke rails
from file:/C:/development/touchrails/tmp/war/WEB-INF/lib/jruby-complete-1.0.jar!/cgi.rb:1067:in `read_multipart'
from C:/development/touchrails/tmp/war/WEB-INF/gems/gems/actionpack-1.13.3/lib/action_controller/cgi_ext/raw_post_data_fix.rb:38:in
`initialize_query'
from file:/C:/development/touchrails/tmp/war/WEB-INF/lib/jruby-complete-1.0.jar!/cgi.rb:2274:in `initialize'
from <script>:0
2007-07-18 16:38:34.824::WARN: EXCEPTION
javax.servlet.ServletException: Failed to invoke rails, please see the log for more details
at org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:151)
at org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:224)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
at org.jruby.webapp.FileServlet.doPost(FileServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
2007-07-18 16:38:35.027::WARN: /touchrails/product/confirm/standard/5433:
javax.servlet.ServletException: Failed to invoke rails, please see the log for more details
at org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:151)
at org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:224)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
at org.jruby.webapp.FileServlet.doPost(FileServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
2007-07-18 16:38:35.230::WARN: /touchrails/product/confirm/standard/5433
javax.servlet.ServletException: Failed to invoke rails, please see the log for more details
at org.jruby.webapp.AbstractRailsServlet.serviceRequest(AbstractRailsServlet.java:151)
at org.jruby.webapp.AbstractRailsServlet.service(AbstractRailsServlet.java:131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:224)
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126)
at org.jruby.webapp.FileServlet.doGet(FileServlet.java:102)
at org.jruby.webapp.FileServlet.doPost(FileServlet.java:153)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:491)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:367)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:185)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:689)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:391)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
at org.mortbay.jetty.Server.handle(Server.java:285)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:457)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:765)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:628)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:209)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:357)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:329)
at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)
This error does not happen if the form is multipart but has no multipart content.
Dan