Edit report at http://bugs.php.net/bug.php?id=53237&edit=1
ID: 53237 Updated by: [email protected] Reported by: lifinsky at yandex dot ru Summary: LinkedList max nodes Segmentation fault Status: Assigned Type: Bug Package: Scripting Engine problem Operating System: Vista, Linux PHP Version: 5.3.3 Assigned To: dmitry Block user comment: N Private report: N New Comment: The crash is caused by C stack overflow during deletion of very deep data structure. It's probably unfixable. Previous Comments: ------------------------------------------------------------------------ [2010-11-04 09:45:27] lifinsky at yandex dot ru Without this line we will not have LinkedList Example in JSON Format: { data: 1 next: { data: 2 next: { data: 3 next: ... } } } ------------------------------------------------------------------------ [2010-11-03 22:01:10] [email protected] I noticed crash is caused by following part: $this->_tail->next = $node; $this->_tail = $node; // without this line, no crash ------------------------------------------------------------------------ [2010-11-03 16:53:26] lifinsky at yandex dot ru Description: ------------ I test linkedList performance and memory usage on Windows Vista Premium with PHP 5.3.3. When list length > 34860 I have server fatal Error ( Segmentation fault) and my fast-cgi script closed. I try test on Linux (PHP 5.2.6) but have some error if length ~ 32735. This error is not related with memory limit. Test script: --------------- class LinkedList { private $_length = 0; private $_head; private $_tail; public function add($data) { $node = (object) array('data' => $data, 'next' => null); if ($this->_length == 0) { $this->_head = $node; $this->_tail = $node; } else { $this->_tail->next = $node; $this->_tail = $node; } $this->_length++; } } $a = new LinkedList(); $startMemory = memory_get_usage(); $start = microtime(true); for ($i = 1; $i <= 34860; $i++) { $a->add($i); } $endMemory = memory_get_usage(); $end = microtime(true); print(($end - $start) . '<br />'); print((int) (($endMemory - $startMemory) / 1024) . '<br />'); Expected result: ---------------- If length = 34860 I got 0.12323784828186 11276 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53237&edit=1
