#34782 [Fbk->Opn]: token_get_all gives wrong result
| From: | linus at mccabe dot nu | Date: | Sat, 08 Oct 2005 12:50:55 +0000 |
| Subject: | #34782 [Fbk->Opn]: token_get_all gives wrong result | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-86248@lists.php.net to get a copy of this message | ||
ID: 34782
User updated by: linus at mccabe dot nu
Reported By: linus at mccabe dot nu
-Status: Feedback
+Status: Open
Bug Type: Scripting Engine problem
Operating System: *
PHP Version: 5.0.5
New Comment:
Here you'll find some valgrind outputs:
http://x.mccabe.nu/public/traces/
I didnt build apache from source, so I used:
valgrind --log-file=./trace1 /usr/sbin/apache -X
I hope its good enough anyway?
The result can be seen in trace1.log, trace2.log and trace3.log.
trace1.log shows was on a request on a small php file that did not
include any parsing error or use token_get_all.
trace2.log shows the request of earlier mentioned 'test.php' requested
once.
trace3.log shows the request of 'test.php' requested twice and the
second time it gave the wrong result.
traceX_full.log is the same request all over again, but using:
valgrind --leak-check=full --log-file=./trace1 /usr/sbin/apache -X
Hope this helps and let me know if there's anything else i can do!
/Linus
Previous Comments:
------------------------------------------------------------------------
[2005-10-08 13:37:45] derick@php.net
This is probably related to the strange reports about highlight_string
doing weird things. If you can, please try to run this:
sudo valgrind /path/to/apachesrc/src/httpd -X
and request the same file twice. If valgrind gives any errors, please
put the trace online and provide a link here. With this we see if it is
indeed multiple requests causeing this problem.
------------------------------------------------------------------------
[2005-10-08 08:06:08] linus at mccabe dot nu
I should also add that this is not reproducable with cli version of php
(probably because it's always a new process?).
Only with apache module have I seen this behaviour and once it get's
into 'error mode' it usually stays that way.
/Linus
------------------------------------------------------------------------
[2005-10-08 08:03:04] linus at mccabe dot nu
I tried with php5-win32-latest: Apache/2.0.52 (Win32) PHP/5.1.0RC2-dev
Same behaviour...
------------------------------------------------------------------------
[2005-10-07 21:56:48] sniper@php.net
Please try using this CVS snapshot:
http://snaps.php.net/php5-latest.tar.gz
For Windows:
http://snaps.php.net/win32/php5-win32-latest.zip
------------------------------------------------------------------------
[2005-10-07 18:06:53] linus at mccabe dot nu
Description:
------------
This is bug 29761, I'd like to see it reopened.
(it might also be 33093, not sure)
Create the two php files in 'reproduce code'.
Point your browser to 'test.php'. First time you should get the
expected result, second the actual result.
If you have many apache threads, you might need to refresh a few times
until the error occurs.
I've tested and reproduced this on:
* Windows XP: Apache/2.0.52 (Win32) PHP/5.0.5
* Linux: Apache/1.3.33 (Debian GNU/Linux) PHP/4.3.10-15
(yes, error.php is supposed to have a parser error)
thanks for your time
/Linus
Reproduce code:
---------------
error.php:
<?php
print('abc'
;
?>
test.php:
<?php
header('Content-Type: text/plain');
$first = token_get_all('<?php $a=$b;');
print_r($first);
require('error.php');
?>
Expected result:
----------------
Array
(
[0] => Array
(
[0] => 366
[1] => <?php
)
[1] => Array
(
[0] => 309
[1] => $a
)
[2] => =
[3] => Array
(
[0] => 309
[1] => $b
)
[4] => ;
)
<br />
<b>Parse error</b>: parse error, unexpected ';' in <b>C:\Program
Files\Apache Group\Apache2\htdocs\error.php</b> on line <b>4</b><br />
Actual result:
--------------
Array
(
[0] => <
[1] => ?
[2] => Array
(
[0] => 307
[1] => php
)
[3] => Array
(
[0] => 369
[1] =>
)
[4] => Array
(
[0] => 309
[1] => $a
)
[5] => =
[6] => Array
(
[0] => 309
[1] => $b
)
[7] => ;
)
<br />
<b>Parse error</b>: parse error, unexpected ';' in <b>C:\Program
Files\Apache Group\Apache2\htdocs\error.php</b> on line <b>4</b><br />
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=34782&edit=1