ID: 30630 User updated by: boccara at netvision dot net dot il Reported By: boccara at netvision dot net dot il -Status: Feedback +Status: Open Bug Type: Reproducible crash Operating System: win 2K / apache 2.0.49 PHP Version: 4.3.9 New Comment:
very very strange !! I have uninstalled totally the Zend Optimizer and restart the server, still the bug. I made some change in the code ( add a lot of echo ) and remarked that it seems that the stack lost some datas. here the change: class TotDevisParEditeur { var $VecEditeur = array(); var $value = array(); function GetValue($type,$editeur) { return $this->VecEditeur[$editeur][$type]; } function Display($type,$editeur) { echo "editeur:$editeur // Type:".$type." Number:"; echo $this->VecEditeur[$editeur][$type]; endl(); } function AddDevis($type,$editeur,$numOfdevis,&$index) { echo $index++."/ ";echo "** BEFORE **";$this->Display($type,$editeur); $value[$type] = $this->GetValue($type,$editeur) + $numOfdevis; $this->VecEditeur[$editeur] = $value; echo $index++."/ "; echo " ADDING $numOfdevis";endl(); echo $index++."/ ";echo "** AFTER **";$this->Display($type,$editeur); } } $SousTotal = new TotDevisParEditeur; $SousTotalCom = array(); $SousTotalCom['gagne'] = new TotDevisParEditeur; $SousTotalCom['perdu'] = new TotDevisParEditeur; $SousTotalCom['encours'] = new TotDevisParEditeur; while (dbFetch($iTableTmp, $Col)) { /* in this portion of code there is no redefinition of the object !! just value are assigned to $RefEditeur, $Gagne,... */ echo $index++."/ ";echo $Gestionnaire."---- $RefEditeur ------>";endl(); echo $index++."/ ";ECHO " *** gagne *** ";endl(); $SousTotalCom['gagne']->AddDevis($Gestionnaire,$RefEditeur,$Gagne,$index); echo $index++."/ ";ECHO " *** perdu *** "; endl(); $SousTotalCom['perdu']->AddDevis($Gestionnaire,$RefEditeur,$Perdu,$index); echo $index++."/ ";ECHO " *** encours *** "; endl(); $SousTotalCom['encours']->AddDevis($Gestionnaire,$RefEditeur,$Encours,$index); echo $index++."/ ";echo "************************************";endl(); } here the result : Take a look at line 3, there is nothing in the stack ( value of variable Number) because this is the 1st turn in the loop. We add the value 2 (line 4) and we got in the line 5 the value 2. ( nothing + 2 = 2 it's ok). Now take a look at line 45. The value of Number should be 2, and here is the problem: Number seems to be lost as there is no value. At Line 47 the value of Number is 0, and we found it a few lines after at Line 73. In this case the value of Number is not lost ! We can found after a lot of exemple where the value is lost, and a lot of exemple where the value is not lost. I think there is a bug with the stack. What do yo think ?? 1/ 22---- CA2 ------> 2/ *** gagne *** 3/ ** BEFORE **editeur:CA2 // Type:22 Number: 4/ ADDING 2 5/ ** AFTER **editeur:CA2 // Type:22 Number:2 6/ *** perdu *** 7/ ** BEFORE **editeur:CA2 // Type:22 Number: 8/ ADDING 0 9/ ** AFTER **editeur:CA2 // Type:22 Number:0 10/ *** encours *** 11/ ** BEFORE **editeur:CA2 // Type:22 Number: 12/ ADDING 2 13/ ** AFTER **editeur:CA2 // Type:22 Number:2 14/ ************************************ 15/ 22---- VR ------> 16/ *** gagne *** 17/ ** BEFORE **editeur:VR // Type:22 Number: 18/ ADDING 1 19/ ** AFTER **editeur:VR // Type:22 Number:1 20/ *** perdu *** 21/ ** BEFORE **editeur:VR // Type:22 Number: 22/ ADDING 0 23/ ** AFTER **editeur:VR // Type:22 Number:0 24/ *** encours *** 25/ ** BEFORE **editeur:VR // Type:22 Number: 26/ ADDING 2 27/ ** AFTER **editeur:VR // Type:22 Number:2 28/ ************************************ 29/ 11---- CA2 ------> 30/ *** gagne *** 31/ ** BEFORE **editeur:CA2 // Type:11 Number: 32/ ADDING 0 33/ ** AFTER **editeur:CA2 // Type:11 Number:0 34/ *** perdu *** 35/ ** BEFORE **editeur:CA2 // Type:11 Number: 36/ ADDING 0 37/ ** AFTER **editeur:CA2 // Type:11 Number:0 38/ *** encours *** 39/ ** BEFORE **editeur:CA2 // Type:11 Number: 40/ ADDING 1 41/ ** AFTER **editeur:CA2 // Type:11 Number:1 42/ ************************************ 43/ 22---- CA2 ------> 44/ *** gagne *** 45/ ** BEFORE **editeur:CA2 // Type:22 Number: 46/ ADDING 0 47/ ** AFTER **editeur:CA2 // Type:22 Number:0 48/ *** perdu *** 49/ ** BEFORE **editeur:CA2 // Type:22 Number: 50/ ADDING 0 51/ ** AFTER **editeur:CA2 // Type:22 Number:0 52/ *** encours *** 53/ ** BEFORE **editeur:CA2 // Type:22 Number: 54/ ADDING 1 55/ ** AFTER **editeur:CA2 // Type:22 Number:1 56/ ************************************ 57/ 22---- VR ------> 58/ *** gagne *** 59/ ** BEFORE **editeur:VR // Type:22 Number:1 60/ ADDING 0 61/ ** AFTER **editeur:VR // Type:22 Number:1 62/ *** perdu *** 63/ ** BEFORE **editeur:VR // Type:22 Number:0 64/ ADDING 0 65/ ** AFTER **editeur:VR // Type:22 Number:0 66/ *** encours *** 67/ ** BEFORE **editeur:VR // Type:22 Number:2 68/ ADDING 1 69/ ** AFTER **editeur:VR // Type:22 Number:3 70/ ************************************ 71/ 22---- CA2 ------> 72/ *** gagne *** 73/ ** BEFORE **editeur:CA2 // Type:22 Number:0 74/ ADDING 0 75/ ** AFTER **editeur:CA2 // Type:22 Number:0 76/ *** perdu *** 77/ ** BEFORE **editeur:CA2 // Type:22 Number:0 78/ ADDING 0 79/ ** AFTER **editeur:CA2 // Type:22 Number:0 80/ *** encours *** 81/ ** BEFORE **editeur:CA2 // Type:22 Number:1 82/ ADDING 1 83/ ** AFTER **editeur:CA2 // Type:22 Number:2 84/ ************************************ 85/ 22---- CA2 ------> 86/ *** gagne *** 87/ ** BEFORE **editeur:CA2 // Type:22 Number:0 88/ ADDING 0 89/ ** AFTER **editeur:CA2 // Type:22 Number:0 90/ *** perdu *** 91/ ** BEFORE **editeur:CA2 // Type:22 Number:0 92/ ADDING 0 93/ ** AFTER **editeur:CA2 // Type:22 Number:0 94/ *** encours *** 95/ ** BEFORE **editeur:CA2 // Type:22 Number:2 96/ ADDING 3 97/ ** AFTER **editeur:CA2 // Type:22 Number:5 98/ ************************************ 99/ 22---- CA2 ------> 100/ *** gagne *** 101/ ** BEFORE **editeur:CA2 // Type:22 Number:0 102/ ADDING 0 103/ ** AFTER **editeur:CA2 // Type:22 Number:0 104/ *** perdu *** 105/ ** BEFORE **editeur:CA2 // Type:22 Number:0 106/ ADDING 0 107/ ** AFTER **editeur:CA2 // Type:22 Number:0 108/ *** encours *** 109/ ** BEFORE **editeur:CA2 // Type:22 Number:5 110/ ADDING 2 111/ ** AFTER **editeur:CA2 // Type:22 Number:7 112/ ************************************ 113/ 22---- VR ------> 114/ *** gagne *** 115/ ** BEFORE **editeur:VR // Type:22 Number:1 116/ ADDING 0 117/ ** AFTER **editeur:VR // Type:22 Number:1 118/ *** perdu *** 119/ ** BEFORE **editeur:VR // Type:22 Number:0 120/ ADDING 0 121/ ** AFTER **editeur:VR // Type:22 Number:0 122/ *** encours *** 123/ ** BEFORE **editeur:VR // Type:22 Number:3 124/ ADDING 1 125/ ** AFTER **editeur:VR // Type:22 Number:4 126/ ************************************ 127/ 22---- CA2 ------> 128/ *** gagne *** 129/ ** BEFORE **editeur:CA2 // Type:22 Number:0 130/ ADDING 2 131/ ** AFTER **editeur:CA2 // Type:22 Number:2 132/ *** perdu *** 133/ ** BEFORE **editeur:CA2 // Type:22 Number:0 134/ ADDING 0 135/ ** AFTER **editeur:CA2 // Type:22 Number:0 136/ *** encours *** 137/ ** BEFORE **editeur:CA2 // Type:22 Number:7 138/ ADDING 0 139/ ** AFTER **editeur:CA2 // Type:22 Number:7 140/ ************************************ 141/ 22---- VR ------> 142/ *** gagne *** 143/ ** BEFORE **editeur:VR // Type:22 Number:1 144/ ADDING 2 145/ ** AFTER **editeur:VR // Type:22 Number:3 146/ *** perdu *** 147/ ** BEFORE **editeur:VR // Type:22 Number:0 148/ ADDING 0 149/ ** AFTER **editeur:VR // Type:22 Number:0 150/ *** encours *** 151/ ** BEFORE **editeur:VR // Type:22 Number:4 152/ ADDING 0 153/ ** AFTER **editeur:VR // Type:22 Number:4 154/ ************************************ 155/ 3---- VR ------> 156/ *** gagne *** 157/ ** BEFORE **editeur:VR // Type:3 Number: 158/ ADDING 0 159/ ** AFTER **editeur:VR // Type:3 Number:0 160/ *** perdu *** 161/ ** BEFORE **editeur:VR // Type:3 Number: 162/ ADDING 0 163/ ** AFTER **editeur:VR // Type:3 Number:0 164/ *** encours *** 165/ ** BEFORE **editeur:VR // Type:3 Number: 166/ ADDING 2 167/ ** AFTER **editeur:VR // Type:3 Number:2 168/ ************************************ 169/ 22---- VR ------> 170/ *** gagne *** 171/ ** BEFORE **editeur:VR // Type:22 Number: 172/ ADDING 0 173/ ** AFTER **editeur:VR // Type:22 Number:0 174/ *** perdu *** 175/ ** BEFORE **editeur:VR // Type:22 Number: 176/ ADDING 0 177/ ** AFTER **editeur:VR // Type:22 Number:0 178/ *** encours *** 179/ ** BEFORE **editeur:VR // Type:22 Number: 180/ ADDING 1 181/ ** AFTER **editeur:VR // Type:22 Number:1 182/ ************************************ 183/ 22---- VR ------> 184/ *** gagne *** 185/ ** BEFORE **editeur:VR // Type:22 Number:0 186/ ADDING 0 187/ ** AFTER **editeur:VR // Type:22 Number:0 188/ *** perdu *** 189/ ** BEFORE **editeur:VR // Type:22 Number:0 190/ ADDING 0 191/ ** AFTER **editeur:VR // Type:22 Number:0 192/ *** encours *** 193/ ** BEFORE **editeur:VR // Type:22 Number:1 194/ ADDING 1 195/ ** AFTER **editeur:VR // Type:22 Number:2 196/ ************************************ 197/ 22---- VR ------> 198/ *** gagne *** 199/ ** BEFORE **editeur:VR // Type:22 Number:0 200/ ADDING 1 201/ ** AFTER **editeur:VR // Type:22 Number:1 202/ *** perdu *** 203/ ** BEFORE **editeur:VR // Type:22 Number:0 204/ ADDING 0 205/ ** AFTER **editeur:VR // Type:22 Number:0 206/ *** encours *** 207/ ** BEFORE **editeur:VR // Type:22 Number:2 208/ ADDING 0 209/ ** AFTER **editeur:VR // Type:22 Number:2 210/ ************************************ 211/ 22---- VR ------> 212/ *** gagne *** 213/ ** BEFORE **editeur:VR // Type:22 Number:1 214/ ADDING 0 215/ ** AFTER **editeur:VR // Type:22 Number:1 216/ *** perdu *** 217/ ** BEFORE **editeur:VR // Type:22 Number:0 218/ ADDING 0 219/ ** AFTER **editeur:VR // Type:22 Number:0 220/ *** encours *** 221/ ** BEFORE **editeur:VR // Type:22 Number:2 222/ ADDING 3 223/ ** AFTER **editeur:VR // Type:22 Number:5 224/ ************************************ 225/ 22---- VR ------> 226/ *** gagne *** 227/ ** BEFORE **editeur:VR // Type:22 Number:1 228/ ADDING 0 229/ ** AFTER **editeur:VR // Type:22 Number:1 230/ *** perdu *** 231/ ** BEFORE **editeur:VR // Type:22 Number:0 232/ ADDING 0 233/ ** AFTER **editeur:VR // Type:22 Number:0 234/ *** encours *** 235/ ** BEFORE **editeur:VR // Type:22 Number:5 236/ ADDING 2 237/ ** AFTER **editeur:VR // Type:22 Number:7 238/ ************************************ 239/ 22---- VR ------> 240/ *** gagne *** 241/ ** BEFORE **editeur:VR // Type:22 Number:1 242/ ADDING 4 243/ ** AFTER **editeur:VR // Type:22 Number:5 244/ *** perdu *** 245/ ** BEFORE **editeur:VR // Type:22 Number:0 246/ ADDING 0 247/ ** AFTER **editeur:VR // Type:22 Number:0 248/ *** encours *** 249/ ** BEFORE **editeur:VR // Type:22 Number:7 250/ ADDING 4 251/ ** AFTER **editeur:VR // Type:22 Number:11 252/ ************************************ 253/ 22---- VR ------> 254/ *** gagne *** 255/ ** BEFORE **editeur:VR // Type:22 Number:5 256/ ADDING 3 257/ ** AFTER **editeur:VR // Type:22 Number:8 258/ *** perdu *** 259/ ** BEFORE **editeur:VR // Type:22 Number:0 260/ ADDING 0 261/ ** AFTER **editeur:VR // Type:22 Number:0 262/ *** encours *** 263/ ** BEFORE **editeur:VR // Type:22 Number:11 264/ ADDING 1 265/ ** AFTER **editeur:VR // Type:22 Number:12 266/ ************************************ 267/ 22---- VR ------> 268/ *** gagne *** 269/ ** BEFORE **editeur:VR // Type:22 Number:8 270/ ADDING 1 271/ ** AFTER **editeur:VR // Type:22 Number:9 272/ *** perdu *** 273/ ** BEFORE **editeur:VR // Type:22 Number:0 274/ ADDING 0 275/ ** AFTER **editeur:VR // Type:22 Number:0 276/ *** encours *** 277/ ** BEFORE **editeur:VR // Type:22 Number:12 278/ ADDING 0 279/ ** AFTER **editeur:VR // Type:22 Number:12 280/ ************************************ 281/ 22---- SYM ------> 282/ *** gagne *** 283/ ** BEFORE **editeur:SYM // Type:22 Number: 284/ ADDING 0 285/ ** AFTER **editeur:SYM // Type:22 Number:0 286/ *** perdu *** 287/ ** BEFORE **editeur:SYM // Type:22 Number: 288/ ADDING 0 289/ ** AFTER **editeur:SYM // Type:22 Number:0 290/ *** encours *** 291/ ** BEFORE **editeur:SYM // Type:22 Number: 292/ ADDING 1 293/ ** AFTER **editeur:SYM // Type:22 Number:1 294/ ************************************ 295/ 22---- CA2 ------> 296/ *** gagne *** 297/ ** BEFORE **editeur:CA2 // Type:22 Number:2 298/ ADDING 4 299/ ** AFTER **editeur:CA2 // Type:22 Number:6 300/ *** perdu *** 301/ ** BEFORE **editeur:CA2 // Type:22 Number:0 302/ ADDING 0 303/ ** AFTER **editeur:CA2 // Type:22 Number:0 304/ *** encours *** 305/ ** BEFORE **editeur:CA2 // Type:22 Number:7 306/ ADDING 1 307/ ** AFTER **editeur:CA2 // Type:22 Number:8 308/ ************************************ 309/ 22---- CA2 ------> 310/ *** gagne *** 311/ ** BEFORE **editeur:CA2 // Type:22 Number:6 312/ ADDING 1 313/ ** AFTER **editeur:CA2 // Type:22 Number:7 314/ *** perdu *** 315/ ** BEFORE **editeur:CA2 // Type:22 Number:0 316/ ADDING 0 317/ ** AFTER **editeur:CA2 // Type:22 Number:0 318/ *** encours *** 319/ ** BEFORE **editeur:CA2 // Type:22 Number:8 320/ ADDING 0 321/ ** AFTER **editeur:CA2 // Type:22 Number:8 322/ ************************************ 323/ 6---- CA2 ------> 324/ *** gagne *** 325/ ** BEFORE **editeur:CA2 // Type:6 Number: 326/ ADDING 2 327/ ** AFTER **editeur:CA2 // Type:6 Number:2 328/ *** perdu *** 329/ ** BEFORE **editeur:CA2 // Type:6 Number: 330/ ADDING 0 331/ ** AFTER **editeur:CA2 // Type:6 Number:0 332/ *** encours *** 333/ ** BEFORE **editeur:CA2 // Type:6 Number: 334/ ADDING 0 335/ ** AFTER **editeur:CA2 // Type:6 Number:0 336/ ************************************ 337/ 6---- VR ------> 338/ *** gagne *** 339/ ** BEFORE **editeur:VR // Type:6 Number: 340/ ADDING 1 341/ ** AFTER **editeur:VR // Type:6 Number:1 342/ *** perdu *** 343/ ** BEFORE **editeur:VR // Type:6 Number: 344/ ADDING 0 345/ ** AFTER **editeur:VR // Type:6 Number:0 346/ *** encours *** 347/ ** BEFORE **editeur:VR // Type:6 Number: 348/ ADDING 2 349/ ** AFTER **editeur:VR // Type:6 Number:2 350/ ************************************ 351/ 6---- CA2 ------> 352/ *** gagne *** 353/ ** BEFORE **editeur:CA2 // Type:6 Number:2 354/ ADDING 0 355/ ** AFTER **editeur:CA2 // Type:6 Number:2 356/ *** perdu *** 357/ ** BEFORE **editeur:CA2 // Type:6 Number:0 358/ ADDING 0 359/ ** AFTER **editeur:CA2 // Type:6 Number:0 360/ *** encours *** 361/ ** BEFORE **editeur:CA2 // Type:6 Number:0 362/ ADDING 1 363/ ** AFTER **editeur:CA2 // Type:6 Number:1 364/ ************************************ 365/ 6---- VR ------> 366/ *** gagne *** 367/ ** BEFORE **editeur:VR // Type:6 Number:1 368/ ADDING 0 369/ ** AFTER **editeur:VR // Type:6 Number:1 370/ *** perdu *** 371/ ** BEFORE **editeur:VR // Type:6 Number:0 372/ ADDING 0 373/ ** AFTER **editeur:VR // Type:6 Number:0 374/ *** encours *** 375/ ** BEFORE **editeur:VR // Type:6 Number:2 376/ ADDING 1 377/ ** AFTER **editeur:VR // Type:6 Number:3 378/ ************************************ 379/ 22---- VR ------> 380/ *** gagne *** 381/ ** BEFORE **editeur:VR // Type:22 Number: 382/ ADDING 0 383/ ** AFTER **editeur:VR // Type:22 Number:0 384/ *** perdu *** 385/ ** BEFORE **editeur:VR // Type:22 Number: 386/ ADDING 0 387/ ** AFTER **editeur:VR // Type:22 Number:0 388/ *** encours *** 389/ ** BEFORE **editeur:VR // Type:22 Number: 390/ ADDING 1 391/ ** AFTER **editeur:VR // Type:22 Number:1 392/ ************************************ continued ..... with no error. Previous Comments: ------------------------------------------------------------------------ [2004-11-01 00:33:57] [EMAIL PROTECTED] Remove all the zend extensions from your configuration, and try again. Only disabling them is not good enough! ------------------------------------------------------------------------ [2004-10-31 21:45:26] boccara at netvision dot net dot il function endl() { echo "<br>"; } ------------------------------------------------------------------------ [2004-10-31 21:23:23] boccara at netvision dot net dot il the line 2018 in the fatal error is: $SousTotal->AddDevis('gagne',$RefEditeur,$Gagne); ------------------------------------------------------------------------ [2004-10-31 21:20:10] boccara at netvision dot net dot il dbfetch us an function created to choose a fetch according to the database. in our case it is MSSQL. this function works already since 4 years. Function dbFetch ($iResult, &$tabColonne) { $iNbCol = 0; // Permet de recuperer une erreur ou le nombre de colonnes $tabColonne = array(); switch (SGBD) { case "ODBC": $iNbCol = odbc_fetch_into($iResult, &$tabColonne); break; case "MSQL": $tabColonne = mysql_fetch_row($iResult); if($tabColonne) $iNbCol = count($tabColonne); break; case "MSSQL": $tabColonne = mssql_fetch_array($iResult); if($tabColonne) { $iNbCol = count($tabColonne); } break; } return $iNbCol; } ------------------------------------------------------------------------ [2004-10-31 19:04:31] boccara at netvision dot net dot il Zend Studio Server 3.5.0 Zend Server Center 3.5.0 Zend Engine 1.3.0 PHP 4.3.9 Zend Optimizer 2.5.5 Zend Debugger 3.5.2 Zend Extension Manager 1.0.4 I also made a test with the Zend Optimiser on OFF and no change difference , still the fatal error ..... ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/30630 -- Edit this bug report at http://bugs.php.net/?id=30630&edit=1