Mantis Bugtracker
  

Viewing Issue Advanced Details Jump to Notes ] View Simple ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0003959 [Quercus] major always 03-22-10 14:40 03-24-10 17:24
Reporter rmann View Status public  
Assigned To
Priority normal Resolution open Platform
Status new   OS
Projection none   OS Version
ETA none Fixed in Version Product Version 4.0.5
  Product Build
Summary 0003959: PHP parsing errors
Description In both resin 4.0.4 and 4.0.5 (and I think 4.0.0), there is a bug in the PHP rendering that either results in a StackOverflowError (4.0.0), or IllegalArgumentException. The stack trace is:

[03-22 14:18:06.284] {http://*:80-18} [^] WARNING (com.caucho.server.webapp.ErrorPageManager) java.lang.IllegalArgumentException
[03-22 14:18:06.284] {http://*:80-18} [^] at java.lang.Character.toChars(Character.java:2584)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStringToken(QuercusParser.java:4757)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStringToken(QuercusParser.java:4738)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseToken(QuercusParser.java:4113)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseUnary(QuercusParser.java:3072)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseAssignExpr(QuercusParser.java:2911)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseMulExpr(QuercusParser.java:2883)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseAddExpr(QuercusParser.java:2855)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseShiftExpr(QuercusParser.java:2830)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseCmpExpr(QuercusParser.java:2791)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseEqExpr(QuercusParser.java:2762)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseBitAndExpr(QuercusParser.java:2740)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseBitXorExpr(QuercusParser.java:2718)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseBitOrExpr(QuercusParser.java:2696)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseAndExpr(QuercusParser.java:2681)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseOrExpr(QuercusParser.java:2652)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseConditionalExpr(QuercusParser.java:2618)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseWeakAndExpr(QuercusParser.java:2596)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseWeakXorExpr(QuercusParser.java:2574)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseWeakOrExpr(QuercusParser.java:2552)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseExpr(QuercusParser.java:2543)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseIf(QuercusParser.java:1160)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStatementList(QuercusParser.java:683)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStatement(QuercusParser.java:817)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseIf(QuercusParser.java:1174)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStatementList(QuercusParser.java:683)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseSwitch(QuercusParser.java:1305)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseStatementList(QuercusParser.java:687)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parseTop(QuercusParser.java:577)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parse(QuercusParser.java:478)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.parser.QuercusParser.parse(QuercusParser.java:331)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.page.PageManager.parse(PageManager.java:256)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.page.PageManager.parse(PageManager.java:213)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.QuercusContext.parse(QuercusContext.java:1109)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.servlet.QuercusServletImpl.service(QuercusServletImpl.java:139)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.quercus.servlet.QuercusServlet.service(QuercusServlet.java:610)
[03-22 14:18:06.284] {http://*:80-18} [^] at javax.servlet.http.HttpServlet.service(HttpServlet.java:96)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:109)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:183)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.webapp.AccessLogFilterChain.doFilter(AccessLogFilterChain.java:103)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:286)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:775)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection.dispatchRequest(TcpConnection.java:600)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection.handleRequestsImpl(TcpConnection.java:566)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection.handleRequests(TcpConnection.java:519)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection$AcceptTask.doTask(TcpConnection.java:1100)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection$ConnectionReadTask.runThread(TcpConnection.java:1037)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.server.connection.TcpConnection$AcceptTask.run(TcpConnection.java:1068)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.util.ThreadPool$PoolThread.runTasks(ThreadPool.java:901)
[03-22 14:18:06.284] {http://*:80-18} [^] at com.caucho.util.ThreadPool$PoolThread.run(ThreadPool.java:866)


The PHP code that causes this is in WordPress 2.9.2, when attempting to save General Settings. The code that fails is wp_includes/plugin.php:336:

    do {
        foreach ( (array) current($wp_filter[$tag]) as $the_ )
            if ( !is_null($the_['function']) )
                call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

    } while ( next($wp_filter[$tag]) !== false );


It's actually the while clause that causes the failure, something in the !== comparison.
Steps To Reproduce
Additional Information
Attached Files

- Relationships

There are no notes attached to this issue.

- Issue History
Date Modified Username Field Change
03-22-10 14:40 rmann New Issue
03-24-10 17:24 ferg Project Resin => Quercus


Mantis 1.0.0rc3[^]
Copyright © 2000 - 2005 Mantis Group
27 total queries executed.
25 unique queries executed.
Powered by Mantis Bugtracker