Mantis - Quercus
Viewing Issue Advanced Details
553 minor always 12-23-05 01:20 01-07-06 15:56
bago  
ferg  
normal  
closed  
3.0.17 fixed  
none    
none 3.0.18  
0000553: java.util.FormatFlagsConversionMismatchException
Trying wordpress:

500 Servlet Exception

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags
= 0
    at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:3974)
    at java.util.Formatter$FormatSpecifier.checkBadFlags(Formatter.java:2899)
    at java.util.Formatter$FormatSpecifier.checkGeneral(Formatter.java:2859)
    at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2636)
    at java.util.Formatter.parse(Formatter.java:2477)
    at java.util.Formatter.format(Formatter.java:2411)
    at java.util.Formatter.format(Formatter.java:2364)
    at java.lang.String.format(String.java:2520)
    at com.caucho.quercus.lib.QuercusStringModule.sprintf(QuercusStringModule.java:1154)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at com.caucho.quercus.module.StaticFunction.eval(StaticFunction.java:347)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.program.ReturnStatement.execute(ReturnStatement.java:65)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.Expr.evalString(Expr.java:402)
    at com.caucho.quercus.expr.AppendExpr.evalString(AppendExpr.java:145)
    at com.caucho.quercus.expr.AppendExpr.eval(AppendExpr.java:136)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:238)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.program.ReturnStatement.execute(ReturnStatement.java:65)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:69)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.AssignExpr.eval(AssignExpr.java:76)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.ForeachStatement.execute(ForeachStatement.java:99)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.PhpProgram.execute(PhpProgram.java:259)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:73)
    at com.caucho.quercus.env.Env.include(Env.java:1962)
    at com.caucho.quercus.expr.IncludeOnceExpr.eval(IncludeOnceExpr.java:72)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.Function.evalImpl(Function.java:264)
    at com.caucho.quercus.program.Function.eval(Function.java:204)
    at com.caucho.quercus.expr.FunctionExpr.evalImpl(FunctionExpr.java:144)
    at com.caucho.quercus.expr.FunctionExpr.eval(FunctionExpr.java:96)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.PhpProgram.execute(PhpProgram.java:259)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:73)
    at com.caucho.quercus.env.Env.include(Env.java:1962)
    at com.caucho.quercus.expr.IncludeExpr.eval(IncludeExpr.java:68)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:69)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:69)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:69)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:69)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.IfStatement.execute(IfStatement.java:66)
    at com.caucho.quercus.program.PhpProgram.execute(PhpProgram.java:259)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:73)
    at com.caucho.quercus.env.Env.include(Env.java:1962)
    at com.caucho.quercus.expr.IncludeExpr.eval(IncludeExpr.java:68)
    at com.caucho.quercus.expr.Expr.evalTop(Expr.java:300)
    at com.caucho.quercus.program.ExprStatement.execute(ExprStatement.java:74)
    at com.caucho.quercus.program.BlockStatement.execute(BlockStatement.java:111)
    at com.caucho.quercus.program.PhpProgram.execute(PhpProgram.java:259)
    at com.caucho.quercus.page.InterpretedPage.execute(InterpretedPage.java:73)
    at com.caucho.quercus.page.PhpPage.executeTop(PhpPage.java:116)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:194)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
    at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
    at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
    at java.lang.Thread.run(Thread.java:595)

Resin-3.0.17 (built Thu, 22 Dec 2005 12:11:34 PST)


I can't see references to any of my php files (or compiled java) so I don't know what this actually is.

Notes
(0000576)
bago   
12-25-05 09:42   
Here is a code to reproduce the issue:

<?php
sprintf('%02s', 5);
?>

java.util.FormatFlagsConversionMismatchException: Conversion = s, Flags
= 0
    at java.util.Formatter$FormatSpecifier.failMismatch(Formatter.java:3974)
    at java.util.Formatter$FormatSpecifier.checkBadFlags(Formatter.java:2899)
    at java.util.Formatter$FormatSpecifier.checkGeneral(Formatter.java:2859)
    at java.util.Formatter$FormatSpecifier.<init>(Formatter.java:2636)
    at java.util.Formatter.parse(Formatter.java:2477)
    at java.util.Formatter.format(Formatter.java:2411)
    at java.util.Formatter.format(Formatter.java:2364)
    at java.lang.String.format(String.java:2520)
    at com.caucho.quercus.lib.QuercusStringModule.sprintf(QuercusStringModule.java:1154)
    at _quercus._test__php.execute(_test__php.java:50)
    at com.caucho.quercus.page.PhpPage.executeTop(PhpPage.java:116)
    at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:194)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:92)
    at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:106)
    at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:178)
    at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:229)
    at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:267)
    at com.caucho.server.port.TcpConnection.run(TcpConnection.java:388)
    at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490)
    at com.caucho.util.ThreadPool.run(ThreadPool.java:423)
    at java.lang.Thread.run(Thread.java:595)
(0000603)
ferg   
12-30-05 13:13   
The issue is a format like "%02s" to sprintf. The zero-fill flag is illegal for Java's sprintf.

A quick patch removes the '0'. The longer fix will need to parse the sprintf format and handle special cases appropriately.
(0000645)
ferg   
01-07-06 15:56   
php/115{0,1,2,3,4}