#40608 [NEW]: break within foreach causes strange behaviour

Ask a Question related to PHP Bugs, Design and Development.

  1. #1

    Default #40608 [NEW]: break within foreach causes strange behaviour

    From: eric dot broersma at phil dot uu dot nl
    Operating system: Sun Solaris
    PHP version: 5.2.1
    PHP Bug Type: Arrays related
    Bug description: break within foreach causes strange behaviour

    Description:
    ------------
    A break within a foreach construct may cause an infinite loop when the
    foreach construct is nested within another foreach construct, possibly as
    a result of the internal array pointer of the array being foreach'ed not
    being reset.

    This problem did not occur in PHP 5.0.5, but did occur in PHP 5.2.1.

    Reproduce code:
    ---------------
    $w = array ( 0, 1 );

    echo 'a';
    foreach ( $w as $x ) {
    echo 'b' . $x;
    foreach ( $w as $z ) {
    echo 'c' . $z;
    break 1;
    }
    echo 'e' . $x;
    }
    echo 'f';

    Expected result:
    ----------------
    ab0c0e0b1c0e1f


    (Behaviour in PHP 5.0.5)

    Actual result:
    --------------
    ab0c0e0b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0!
    e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2 b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1 c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0 e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1 b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2 c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0 e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2 b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1 c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0 e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1 b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2 c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0 e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b...
    (infinite loop)

    (Behaviour in PHP 5.2.1)

    --
    Edit bug report at [url]http://bugs.php.net/?id=40608&edit=1[/url]
    --
    Try a CVS snapshot (PHP 4.4): [url]http://bugs.php.net/fix.php?id=40608&r=trysnapshot44[/url]
    Try a CVS snapshot (PHP 5.2): [url]http://bugs.php.net/fix.php?id=40608&r=trysnapshot52[/url]
    Try a CVS snapshot (PHP 6.0): [url]http://bugs.php.net/fix.php?id=40608&r=trysnapshot60[/url]
    Fixed in CVS: [url]http://bugs.php.net/fix.php?id=40608&r=fixedcvs[/url]
    Fixed in release: [url]http://bugs.php.net/fix.php?id=40608&r=alreadyfixed[/url]
    Need backtrace: [url]http://bugs.php.net/fix.php?id=40608&r=needtrace[/url]
    Need Reproduce Script: [url]http://bugs.php.net/fix.php?id=40608&r=needscript[/url]
    Try newer version: [url]http://bugs.php.net/fix.php?id=40608&r=oldversion[/url]
    Not developer issue: [url]http://bugs.php.net/fix.php?id=40608&r=support[/url]
    Expected behavior: [url]http://bugs.php.net/fix.php?id=40608&r=notwrong[/url]
    Not enough info: [url]http://bugs.php.net/fix.php?id=40608&r=notenoughinfo[/url]
    Submitted twice: [url]http://bugs.php.net/fix.php?id=40608&r=submittedtwice[/url]
    register_globals: [url]http://bugs.php.net/fix.php?id=40608&r=globals[/url]
    PHP 3 support discontinued: [url]http://bugs.php.net/fix.php?id=40608&r=php3[/url]
    Daylight Savings: [url]http://bugs.php.net/fix.php?id=40608&r=dst[/url]
    IIS Stability: [url]http://bugs.php.net/fix.php?id=40608&r=isapi[/url]
    Install GNU Sed: [url]http://bugs.php.net/fix.php?id=40608&r=gnused[/url]
    Floating point limitations: [url]http://bugs.php.net/fix.php?id=40608&r=float[/url]
    No Zend Extensions: [url]http://bugs.php.net/fix.php?id=40608&r=nozend[/url]
    MySQL Configuration Error: [url]http://bugs.php.net/fix.php?id=40608&r=mysqlcfg[/url]
    eric dot broersma at phil dot uu dot nl Guest

  2. Similar Questions and Discussions

    1. #40768 [NEW]: nested foreach break -- infinite loop - serious
      From: rave235 at gmail dot com Operating system: winxp PHP version: 5.2.1 PHP Bug Type: Scripting Engine problem Bug...
    2. strange SQL behaviour
      Hello, I am running DB2 v7.2 on NT. suppose I ussue following simple SQL stmt:
    3. Very strange behaviour
      Hello All, Please help to answer a question why I cannot access port 6355 in below example. Puting the name of service (mydaemon) instead of port...
    4. Strange CLI behaviour
      Dear all, I've encountered some strange behaviour with PHP (4.3.2) using the CLI-API. When I provide an option in the first line of my script...
    5. strange foreach behaviour
      I have come up against a very strange problem. I currently have no idea how to even approach attempting to fix it...
  3. #2

    Default #40608 [Opn->Fbk]: break within foreach causes strange behaviour

    ID: 40608
    Updated by: [email]tony2001@php.net[/email]
    Reported By: eric dot broersma at phil dot uu dot nl
    -Status: Open
    +Status: Feedback
    Bug Type: Arrays related
    Operating System: Sun Solaris
    PHP Version: 5.2.1
    New Comment:

    Cannot reproduce.
    Make sure you don't have any zend_extension's like ionCube, Zend
    Optimizer, APC, eAccelerator etc.


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

    [2007-02-23 16:49:12] eric dot broersma at phil dot uu dot nl

    Description:
    ------------
    A break within a foreach construct may cause an infinite loop when the
    foreach construct is nested within another foreach construct, possibly
    as a result of the internal array pointer of the array being foreach'ed
    not being reset.

    This problem did not occur in PHP 5.0.5, but did occur in PHP 5.2.1.

    Reproduce code:
    ---------------
    $w = array ( 0, 1 );

    echo 'a';
    foreach ( $w as $x ) {
    echo 'b' . $x;
    foreach ( $w as $z ) {
    echo 'c' . $z;
    break 1;
    }
    echo 'e' . $x;
    }
    echo 'f';

    Expected result:
    ----------------
    ab0c0e0b1c0e1f


    (Behaviour in PHP 5.0.5)

    Actual result:
    --------------
    ab0c0e0b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c 0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e 2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b 1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c 0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e 1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b 2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0!
    e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2 b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1 c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0 e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1 b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2 c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0 e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2 b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1 c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0 e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1 b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2 c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b2c0 e2b1c0e1b2c0e2b1c0e1b2c0e2b1c0e1b...
    (infinite loop)

    (Behaviour in PHP 5.2.1)


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


    --
    Edit this bug report at [url]http://bugs.php.net/?id=40608&edit=1[/url]
    tony2001@php.net Guest

Posting Permissions

  • You may not post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139