java - StackOverflowError when uploading file on ORBEON 4.1 -


we stackoverflowerror error while uploading file through upload control in orbeon 4.1.:

java.lang.stackoverflowerror @ org.orbeon.msv.datatype.regexp.op$rangeop.gettoken(op.java:262) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1702) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1912) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) . . . @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1912) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1912) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1912) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1912) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matchstring(regularexpression.java:1938) @ org.orbeon.msv.datatype.regexp.regularexpression.matches(regularexpression.java:1472) @ org.orbeon.msv.datatype.regexp.regularexpression.matches(regularexpression.java:1410) @ org.orbeon.msv.datatype.regexp.internalimpl$1.matches(internalimpl.java:25) @ org.orbeon.msv.datatype.xsd.anyuritype.checkformat(anyuritype.java:35) @ org.orbeon.msv.datatype.xsd.xsdatatypeimpl.isvalid(xsdatatypeimpl.java:80) @ org.orbeon.msv.verifier.regexp.stringtoken.match(stringtoken.java:69) @ org.orbeon.msv.verifier.regexp.residualcalculator.ondata(residualcalculator.java:135) @ org.orbeon.msv.grammar.dataexp.visit(dataexp.java:70) @ org.orbeon.msv.verifier.regexp.residualcalculator.calcresidual(residualcalculator.java:75) @ org.orbeon.msv.verifier.regexp.expressionacceptor.stepforward(expressionacceptor.java:296) @ org.orbeon.msv.verifier.regexp.expressionacceptor.ontext2(expressionacceptor.java:338) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validatechildren(xformsmodelschemavalidator.java:640) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validateelement(xformsmodelschemavalidator.java:351) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validatechildren(xformsmodelschemavalidator.java:594) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validateelement(xformsmodelschemavalidator.java:351) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validatechildren(xformsmodelschemavalidator.java:594) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validateelement(xformsmodelschemavalidator.java:351) @ org.orbeon.oxf.xforms.xformsmodelschemavalidator.validateinstance(xformsmodelschemavalidator.java:773) @ org.orbeon.oxf.xforms.xformsmodel.dorevalidate(xformsmodel.java:819) @ org.orbeon.oxf.xforms.xformsmodel.performdefaultaction(xformsmodel.java:445) @ org.orbeon.oxf.xforms.event.dispatch$$anonfun$dispatchevent$1.apply$mcv$sp(dispatch.scala:132) @ org.orbeon.oxf.xforms.event.dispatch$$anonfun$dispatchevent$1.apply(dispatch.scala:68) @ org.orbeon.oxf.xforms.event.dispatch$$anonfun$dispatchevent$1.apply(dispatch.scala:68) @ org.orbeon.oxf.xforms.event.dispatch$.withevent$1(dispatch.scala:33) @ org.orbeon.oxf.xforms.event.dispatch$.dispatchevent(dispatch.scala:67) @ org.orbeon.oxf.xforms.event.dispatch.dispatchevent(dispatch.scala) @ org.orbeon.oxf.xforms.xformsmodel.rebuildrecalculaterevalidateifneeded(xformsmodel.java:966) @ org.orbeon.oxf.xforms.xbl.refreshsupport$$anonfun$rebuildrecalculaterevalidateifneeded$1.apply(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.refreshsupport$$anonfun$rebuildrecalculaterevalidateifneeded$1.apply(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.xblcontainer$$anonfun$doinselfanddescendants$1.apply(xblcontainer.scala:185) @ org.orbeon.oxf.xforms.xbl.xblcontainer$$anonfun$doinselfanddescendants$1.apply(xblcontainer.scala:184) @ scala.collection.immutable.list.foreach(list.scala:309) @ org.orbeon.oxf.xforms.xbl.xblcontainer.doinselfanddescendants(xblcontainer.scala:184) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.rebuildrecalculaterevalidateifneeded(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.xblcontainer.rebuildrecalculaterevalidateifneeded(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.synchronizeandrefresh(xblcontainer.scala:300) @ org.orbeon.oxf.xforms.xbl.xblcontainer.synchronizeandrefresh(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.endoutermostactionhandler(xblcontainer.scala:276) @ org.orbeon.oxf.xforms.xbl.xblcontainer.endoutermostactionhandler(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.xformsmodel.rebuildrecalculaterevalidateifneeded(xformsmodel.java:962) @ org.orbeon.oxf.xforms.xbl.refreshsupport$$anonfun$rebuildrecalculaterevalidateifneeded$1.apply(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.refreshsupport$$anonfun$rebuildrecalculaterevalidateifneeded$1.apply(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.xblcontainer$$anonfun$doinselfanddescendants$1.apply(xblcontainer.scala:185) @ org.orbeon.oxf.xforms.xbl.xblcontainer$$anonfun$doinselfanddescendants$1.apply(xblcontainer.scala:184) @ scala.collection.immutable.list.foreach(list.scala:309) @ org.orbeon.oxf.xforms.xbl.xblcontainer.doinselfanddescendants(xblcontainer.scala:184) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.rebuildrecalculaterevalidateifneeded(xblcontainer.scala:311) @ org.orbeon.oxf.xforms.xbl.xblcontainer.rebuildrecalculaterevalidateifneeded(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.synchronizeandrefresh(xblcontainer.scala:300) @ org.orbeon.oxf.xforms.xbl.xblcontainer.synchronizeandrefresh(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.xbl.refreshsupport$class.endoutermostactionhandler(xblcontainer.scala:276) @ org.orbeon.oxf.xforms.xbl.xblcontainer.endoutermostactionhandler(xblcontainer.scala:53) @ org.orbeon.oxf.xforms.event.clientevents$$anonfun$processevent$1.apply$mcv$sp(clientevents.scala:508) @ org.orbeon.oxf.xforms.event.clientevents$$anonfun$processevent$1.apply(clientevents.scala:470) @ org.orbeon.oxf.xforms.event.clientevents$$anonfun$processevent$1.apply(clientevents.scala:470) @ org.orbeon.oxf.util.logging$class.withdebug(logging.scala:43) @ org.orbeon.oxf.xforms.event.clientevents$.withdebug(clientevents.scala:36) @ org.orbeon.oxf.xforms.event.clientevents$.processevent(clientevents.scala:470) @ org.orbeon.oxf.xforms.event.clientevents$$anonfun$processevents$1.apply(clientevents.scala:127) @ org.orbeon.oxf.xforms.event.clientevents$$anonfun$processevents$1.apply(clientevents.scala:126) @ scala.collection.immutable.list.foreach(list.scala:309) @ org.orbeon.oxf.xforms.event.clientevents$.processevents(clientevents.scala:126) @ org.orbeon.oxf.xforms.event.clientevents.processevents(clientevents.scala) @ org.orbeon.oxf.xforms.processor.xformsserver$2.run(xformsserver.java:208) @ org.orbeon.oxf.xforms.action.xformsapi$$anonfun$withcontainingdocumentjava$1.apply$mcv$sp(xformsapi.scala:47) @ org.orbeon.oxf.xforms.action.xformsapi$$anonfun$withcontainingdocumentjava$1.apply(xformsapi.scala:47) @ org.orbeon.oxf.xforms.action.xformsapi$$anonfun$withcontainingdocumentjava$1.apply(xformsapi.scala:47) @ org.orbeon.oxf.util.dynamicvariable.withvalue(dynamicvariable.scala:40) @ org.orbeon.oxf.xforms.action.xformsapi$.withcontainingdocument(xformsapi.scala:52) @ org.orbeon.oxf.xforms.action.xformsapi$.withcontainingdocumentjava(xformsapi.scala:46) @ org.orbeon.oxf.xforms.action.xformsapi.withcontainingdocumentjava(xformsapi.scala) @ org.orbeon.oxf.xforms.processor.xformsserver.doit(xformsserver.java:191) @ org.orbeon.oxf.xforms.processor.xformsserver.access$000(xformsserver.java:62) @ org.orbeon.oxf.xforms.processor.xformsserver$1.readimpl(xformsserver.java:88) @ org.orbeon.oxf.processor.impl.processoroutputimpl$topleveloutputfilter.read(processoroutputimpl.java:258) @ org.orbeon.oxf.processor.impl.processoroutputimpl.read(processoroutputimpl.java:404) @ org.orbeon.oxf.processor.processorimpl.readinputassax(processorimpl.java:262) @ org.orbeon.oxf.processor.pipeline.teeprocessor$teeprocessoroutputimpl.readimpl(teeprocessor.java:89) @ org.orbeon.oxf.processor.impl.processoroutputimpl$topleveloutputfilter.read(processoroutputimpl.java:258) @ org.orbeon.oxf.processor.impl.processoroutputimpl.read(processoroutputimpl.java:404) @ org.orbeon.oxf.processor.processorimpl.readinputassax(processorimpl.java:262) @ org.orbeon.oxf.processor.processorimpl.readinputastinytree(processorimpl.java:288) @ org.orbeon.oxf.processor.processorimpl$3.read(processorimpl.java:317) @ org.orbeon.oxf.processor.processorimpl$3.read(processorimpl.java:315) @ org.orbeon.oxf.processor.processorimpl.readcacheinputasobject(processorimpl.java:363) @ org.orbeon.oxf.processor.processorimpl.readcacheinputastinytree(processorimpl.java:315) @ org.orbeon.oxf.processor.pipeline.choose.concretechooseprocessor.start(concretechooseprocessor.java:186) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor$4.run(pipelineprocessor.java:617) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor.executechildren(pipelineprocessor.java:679) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor.start(pipelineprocessor.java:614) @ org.orbeon.oxf.processor.pipeline.choose.concretechooseprocessor.start(concretechooseprocessor.java:248) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor$4.run(pipelineprocessor.java:617) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor.executechildren(pipelineprocessor.java:679) @ org.orbeon.oxf.processor.pipeline.pipelineprocessor.start(pipelineprocessor.java:614) @ org.orbeon.oxf.pipeline.initutils$.runprocessor(initutils.scala:81) @ org.orbeon.oxf.webapp.processorservice.service(processorservice.scala:40) @ org.orbeon.oxf.servlet.orbeonservlet$$anonfun$service$1.apply$mcv$sp(orbeonservlet.scala:74) @ org.orbeon.oxf.servlet.orbeonservlet$$anonfun$service$1.apply(orbeonservlet.scala:67) @ org.orbeon.oxf.servlet.orbeonservlet$$anonfun$service$1.apply(orbeonservlet.scala:67) @ org.orbeon.oxf.util.scalautils$.withrootexception(scalautils.scala:118) @ org.orbeon.oxf.servlet.orbeonservlet.service(orbeonservlet.scala:67) @ javax.servlet.http.httpservlet.service(httpservlet.java:820) @ weblogic.servlet.internal.stubsecurityhelper$servletserviceaction.run(stubsecurityhelper.java:227) @ weblogic.servlet.internal.stubsecurityhelper.invokeservlet(stubsecurityhelper.java:125) @ weblogic.servlet.internal.servletstubimpl.execute(servletstubimpl.java:300) @ weblogic.servlet.internal.tailfilter.dofilter(tailfilter.java:26) @ weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:56) @ cz.sefira.j2ee.filters.badcharacterremover.dofilter(badcharacterremover.java:40) @ weblogic.servlet.internal.filterchainimpl.dofilter(filterchainimpl.java:56) @ weblogic.servlet.internal.webappservletcontext$servletinvocationaction.wraprun(webappservletcontext.java:3715) @ weblogic.servlet.internal.webappservletcontext$servletinvocationaction.run(webappservletcontext.java:3681) @ weblogic.security.acl.internal.authenticatedsubject.doas(authenticatedsubject.java:321) @ weblogic.security.service.securitymanager.runas(securitymanager.java:120) @ weblogic.servlet.internal.webappservletcontext.securedexecute(webappservletcontext.java:2277) @ weblogic.servlet.internal.webappservletcontext.execute(webappservletcontext.java:2183) @ weblogic.servlet.internal.servletrequestimpl.run(servletrequestimpl.java:1454) @ weblogic.work.executethread.execute(executethread.java:209) @ weblogic.work.executethread.run(executethread.java:178) 

tested uri file:/tmp/xforms_upload_1442468717846302111.tmp?filename=c%3a%5cusers%5ctisler%5cdownloads%5cschody2012.grant&mediatype=text%2fplain&size=1498&mac=e8f3b5f6a2f107958ae45bdbfae576a77adce2a6

application plain xforms application without formrunner/builder. upload code fragment is:

            <xforms:upload ref="." xxforms:size="60">               <xforms:filename ref="@filename"/>               <xforms:mediatype ref="@mediatype"/>               <xxforms:size ref="@size"/>               <xforms:alert>&#160;není vybrán soubor nebo překračuje povolenou velikost (3mb)</xforms:alert>             </xforms:upload> 

and binded <file filename="" mediatype="" size="0"/> xml fragment.

environment: wls 10.3.5.0, sun java 1.6.0_24 on linux 2.6.18-274.el5pae. on dev server (wls 10.3.3.0, sun java 1.6.0_23, windows 7 ok.

regular expression , tested string ok in java regular expression classes.

edit:

the regexp in org.orbeon.msv.dataype.xsd.anyuritype on row 35 was: ([a-za-z][a-za-z0-9\+\-\.]*:((((//(((((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[;:&=\+$,])*@)?((([0-9a-za-z]([0-9a-za-z\-]*[0-9a-za-z])?\.)*[a-za-z]([0-9a-za-z\-]*[0-9a-za-z])?(\.)?)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\[(((([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*(::([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*)?)?)|(::([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*)?))(:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})?)|(::[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))\]))(:[0-9]*)?)?)|((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[$,;:@&=\+])+))(/(((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*)(/((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*))*))?)|(/(((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*)(/((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*))*)))(\?([;/\?:@&=\+$,\[\]]|([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2})*)?)|((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[;\?:@&=\+$,])(([;/\?:@&=\+$,\[\]]|([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}))*))|((//(((((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[;:&=\+$,])*@)?((([0-9a-za-z]([0-9a-za-z\-]*[0-9a-za-z])?\.)*[a-za-z]([0-9a-za-z\-]*[0-9a-za-z])?(\.)?)|([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})|(\[(((([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*(::([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*)?)?)|(::([0-9a-fa-f]{1,4}(:[0-9a-fa-f]{1,4})*)?))(:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})?)|(::[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}))\]))(:[0-9]*)?)?)|((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[$,;:@&=\+])+))(/(((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*)(/((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*))*))?)|(/(((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*)(/((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*))*))|((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[;@&=\+$,])+(/(((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*)(/((([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*(;(([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2}|[:@&=\+$,])*)*))*))?))(\?([;/\?:@&=\+$,\[\]]|([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2})*)?)?(#([;/\?:@&=\+$,\[\]]|([0-9a-za-z]|[\-_\.!~\*'\(\)])|%[0-9a-fa-f]{2})*)?

the same expression called more times, first calls ok (some internal orbeon uri tested), last of following calls throw stackoverflowerror every time.

the tested urls sequence on row 35 of anyuritype class was:

  • /services/prilohadownload?id=1882
  • /services/prilohadownload?id=1882
  • /services/prilohadownload?id=1882
  • empty string
  • /services/prilohadownload?id=1882
  • file:/tmp/xforms_upload_8919864313517610561.tmp?filename=c%3a%5cusers%5ctisler%5cdownloads%5cpocketbook_301plus_upgrade_manual.doc&mediatype=application%2fmsword&size=23040&mac=1ca817ef35b22dd74b809332896c580ef5ee08fe


Comments

Popular posts from this blog

linux - xterm copying to CLIPBOARD using copy-selection causes automatic updating of CLIPBOARD upon mouse selection -

c++ - qgraphicsview horizontal scrolling always has a vertical delta -