ID:               27895
 Comment by:       jevon at jevon dot org
 Reported By:      mes at zeroc dot com
 Status:           Feedback
 Bug Type:         Zend Engine 2 problem
 Operating System: Windows 2000/XP
 PHP Version:      5.0.0RC1
 New Comment:

I can occasionally get it to crash with almost any exception too,
thrown outside of a class, like so:



<?php

class E extends Exception { } // don't know if this makes a difference



try {

  throw new E();

} catch (Exception $e) {

  // do nothing - don't know if this makes a difference

}

echo "42";



?>



Access Violations occur less frequently, but still do occur. Access
violations are more likely to be caused, the more complex the script
becomes. A small 4000-line web application (I can share source) almost
NEVER runs without an Access Violation (but it does occasionally!)



I can show that the number of times required to run the script before
crash is indeed random:



<?php

for ($j = 0; $j < 50; $j++) {

  for ($i = 0; $i < 100; $i++) {

    if (($str = file_get_contents("http://url_to_script?$i";)) != "42")
{

      echo $i . "access violation [$str]";

      break;

    } else {

      $s++;

    }

  }

}

?>



By echoing $i repeatedly, sometimes it will never fail; other times it
will repeatedly crash after 1-10 file_get_contents()s.



I guess it's a problem with memory allocation? I get a lot of Access
Violations and can't continue developing with them all.



OS: Windows XP Pro SP1

Server: Microsoft IIS 5.1

MySQL: 4.1.1 alpha

PHP: 5.0RC1



Keep up the good work :)


Previous Comments:
------------------------------------------------------------------------

[2004-04-07 05:15:06] [EMAIL PROTECTED]

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



------------------------------------------------------------------------

[2004-04-07 05:14:59] [EMAIL PROTECTED]

Does not crash within Linux (debug/no-debug)



------------------------------------------------------------------------

[2004-04-06 22:14:28] mes at zeroc dot com

Description:
------------
I'm using PHP 5.0.0RC1 and Apache 2.0.49 on Windows 2000 & XP. After
executing the enclosed script a number of times, I eventually receive
an Access Violation notice. Sometimes it happens after two executions,
sometimes after 20, but it always happens.



I initially used the binary distributions of PHP5 and Apache, but I've
also compiled Apache and PHP5 from sources using VC 6.0 and VC 7.0,
with the same result. Unfortunately, the problem only appears when I
compile in release mode, not in debug mode.



However, I believe the problem occurs in the first while loop of
zend_fetch_debug_backtrace, where the args variable eventually points
to an invalid location and is then dereferenced.

Reproduce code:
---------------
<HTML>

<HEAD>

    <TITLE>Access Violation Demo</TITLE>

</HEAD>

<BODY>



    <H1>Access Violation Demo</H1>



<?php



if(isset($_POST["submitted"]))

{

    echo "<HR>\n";

    echo "<P>Status:<BR><B>\n";

    try

    {

        throw new Exception;

    }

    catch(Exception $ex)

    {

        echo "<pre>\n";

        print_r($ex);

        echo "</pre>\n";

    }

    echo "</B></P>\n";

    echo "<HR>\n";

}

?>



    <P>

    <FORM method="POST" action="<?php echo
basename($_SERVER["PHP_SELF"]); ?>">

        <INPUT type="hidden" name="submitted" value="yes">

        <INPUT type="submit" name="Submit" value="Submit">

    </FORM>

</BODY>

</HTML>

Expected result:
----------------
Access violation dialog

Actual result:
--------------
Can't get a useful stack trace because it doesn't seem to happen in
debug mode.


------------------------------------------------------------------------


-- 
Edit this bug report at http://bugs.php.net/?id=27895&edit=1

Reply via email to