/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Bug i 4.0.6
Fra : Niels Andersen


Dato : 15-08-01 20:42

Jeg har fundet en bug, og jeg kan genskabe den. :)
Jeg har dog ikke energi til at koge det mere ned nu, men jeg synes ikke det
er nok til at bugreport.
Hell, det er ikke engang nok til at jeg gider kigge om den allerede er
rapporteret. :)

Det er med udgangspunk i Stig's script ("Dagens quiz-spørgsmål!" -
news:3b7a8aa8$0$97101$edfadb0f@dspool01.news.tele.dk ):
<?
function grabkeys ($felt, $key, $side) {
global $newarray;
$stopkey = array ("A","Z");//De key-navne som den ikke skal gemme.
If (!in_array($key , $stopkey)) {
$newarray[] = $key;
}
}

function showkeys ($felt, $key) {
global $newarray;
echo "showkeys($felt, $key)<br>\n";
flush();
echo $newarray[0] . "12345678";
echo "\n";
}

$row =
array("A"=>"1","B"=>"1","C"=>"1","D"=>"1","E"=>"1","F"=>"1","Z"=>"1");
array_walk ($row, 'grabkeys', $side);
array_walk ($row, 'showkeys');
?>

Anden gang den når til linjen:
echo $newarray[0] . "12345678";
Dør PHP. Følgende dukker op i apache's error log:
FATAL: emalloc(): Unable to allocate 926299453 bytes

Det er lidt forskelligt hvilket tal jeg får, men det er i den
størrelsesorden. :)

Det sjove ved det, er strengen "12345678". Så længe der er 8 eller flere
tegn, går det tilsyneladende galt.

Er der nogen der kan koge den ned, eller måske finde den blandt de
rapporterede bugs?

--
Mvh.

Niels Andersen



 
 
Troels Arvin (15-08-2001)
Kommentar
Fra : Troels Arvin


Dato : 15-08-01 21:31

On Wed, 15 Aug 2001 21:41:44 +0200, "Niels Andersen"
<niels-usenet@myplace.dk> wrote:

> Er der nogen der kan koge den ned, eller måske finde den blandt de
> rapporterede bugs?

Jeg ved ikke lige, hvad der sker, men noget lignende synes at være
rapporteret:
http://www.php.net/bugs.php?id=11389

Problemet er ikke rettet i den netop frigivne release candidate 1 af PHP
4.0.7.

--
Greetings from Troels Arvin, Copenhagen, Denmark

Jesper Juul-Mortense~ (15-08-2001)
Kommentar
Fra : Jesper Juul-Mortense~


Dato : 15-08-01 21:42

On Wed, 15 Aug 2001 22:30:31 +0200, "Troels Arvin" <troels@arvin.dk>
wrote:

>Problemet er ikke rettet i den netop frigivne release candidate 1 af PHP
>4.0.7.

Du har ikke en link til rettelserne i 4.0.7? Jeg synes ikke at kunne
finde noget...

/Jesper

Troels Arvin (15-08-2001)
Kommentar
Fra : Troels Arvin


Dato : 15-08-01 21:53

On Wed, 15 Aug 2001 22:42:02 +0200, "Jesper Juul-Mortensen" <na@na.na>
wrote:

> Du har ikke en link til rettelserne i 4.0.7?
http://cvs.php.net/co.php/php4/NEWS?r=1.737.2.1

--
Greetings from Troels Arvin, Copenhagen, Denmark

Troels Arvin (15-08-2001)
Kommentar
Fra : Troels Arvin


Dato : 15-08-01 21:51

On Wed, 15 Aug 2001 21:41:44 +0200, "Niels Andersen"
<niels-usenet@myplace.dk> wrote:

> function grabkeys ($felt, $key, $side) {
[...]
> array_walk ($row, 'grabkeys', $side);

Hvad gør de dér $side?
Hvis jeg fjerner dem fra koden synes ting at virke, så måske bug'en er
lokaliseret til en situation, hvor et null-argument benyttes?

--
Greetings from Troels Arvin, Copenhagen, Denmark

Troels Arvin (15-08-2001)
Kommentar
Fra : Troels Arvin


Dato : 15-08-01 23:50

On Wed, 15 Aug 2001 22:50:34 +0200, "Troels Arvin" <troels@arvin.dk>
wrote:

> Hvis jeg fjerner dem fra koden synes ting at virke, så måske bug'en er
> lokaliseret til en situation, hvor et null-argument benyttes?

Hm. Tilsyneladende ikke. En simplificeret kodestump giver stadig
core-dump:

<?php

function test($val,$key)
{
   global $globalArray;
   $globalArray[]=$key; // this will end up crashing
//   $globalArray[]=(string)$key; // this will end up OK
   print "val: $val; key: $key\n"; flush();
}

$arr=array('k'=>'v');
array_walk($arr,'test');

// This will crash:
print "First value: ".$globalArray[0];

// This will not crash, but give the wrong
// result, and the final "done" will never be
// printed:
// print "First value: "; print $globalArray[0];

print "\nDone\n";

?>

(Er ved at blive rapporteret i PHP's bug-handling system.)

--
Greetings from Troels Arvin, Copenhagen, Denmark

Niels Andersen (16-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 16-08-01 06:24

"Troels Arvin" <troels@arvin.dk> wrote in message
news:9leucr$jva$1@sunsite.dk...
> $arr=array('k'=>'v');

Måske du skulle bruge et lidt større array. Fejlen dukkede først op hos mig
ANDEN gang funktionen blev udført.

Det ser også ud som om du ikke får helt de samme "symptomer" som mig, men
derfor kan det godt være den samme bug.

> (Er ved at blive rapporteret i PHP's bug-handling system.)

Godt. :)

--
Mvh.

Niels Andersen



Niels Andersen (16-08-2001)
Kommentar
Fra : Niels Andersen


Dato : 16-08-01 06:21

"Troels Arvin" <troels@arvin.dk> wrote in message
news:9lendb$4lo$1@sunsite.dk...
> Hvad gør de dér $side?

Hov, dem glemte jeg at fjerne.

Der stod oprindeligt "$side = 1;" øverst i scriptet, men det var ikke
nødvendigt for at reproducere fejlen.

--
Mvh.

Niels Andersen



Søg
Reklame
Statistik
Spørgsmål : 177560
Tips : 31968
Nyheder : 719565
Indlæg : 6408942
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste