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

Reply via email to