Php neden PHP segmentasyon hatası while döngüsü

2 Cevap php

Ben php segfault yapmak için bir yol keşfetti, ve ben neler hakkında biraz meraklıyım. Belki birisi benim için bu açıklayabilir?

joern@xps:..com/trunk5/tools/nestedset> cat > while.php
<?php
while(1){
        die('dd');
}
?>
^C
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php   
ddzsh: segmentation fault  php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%                                                                                                                                                                                 
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%                                                                                                                                                                                 
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
ddzsh: segmentation fault  php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
ddzsh: segmentation fault  php -f while.php
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%                                                                                                                                                                                 
0 joern@xps:..com/trunk5/tools/nestedset> php -f while.php
dd%

Gördüğünüz gibi, her zaman olmaz. Php önbelleğe alma?

php5 5.2.10.dfsg.1-2ubuntu6.1

2 Cevap

Wikipedia: Segmentation Fault

Araştırma Biraz bazı PHP uzantıları oynamak güzel olmayabilir, ya da birbirleri ile oynamak güzel olmadığını gösterir. Ayrıca sunucu veya sunucu yapılandırmasına bağlıdır.

Eğer aynı anda yüklenebilir XDebug ve Zend Debugger hem kullanıyorsanız bu neden olabilir.

İlk başta ben muhtemelen bir kalıbın () deyimi ile kullanılan while döngüsü nedeni bir parçası olabileceğini düşündüm .. bu da bir segmentasyon hatası neden olmadığını bilmek merak ediyorum:

while (!$fault) { 
  $fault=check_fault_function();
  }
if ($fault) { die('dd'); }

Değilse bu süre kullanarak ne kadar olacak ve birlikte ölebilir. (1) {} (sunucu sonsuz rutinleri için bellek ayrılamadı bilmiyor olabilir) ... sonsuz bir döngü ise Bildiğiniz gibi çökmelerine neden çalıştığınız sürece bu nedenle normalde kötü bir uygulamadır.

Bu PHP kaynak bilinen bir hata ile ilişkili görünmektedir. Bu PHP gövde sabit, ve 5.2.11 sürümü etrafında biraz zaman dışarı haddelenmiş edilmiş gibi görünüyor oldu. Ayrıntılar için here ve here bakınız.