Edit report at http://bugs.php.net/bug.php?id=51216&edit=1
ID: 51216 Comment by: holderm at lycos dot com Reported by: dtm2mcs at gmail dot com Summary: Segmentation fault when compiling PHP with PHAR Status: Open Type: Bug Package: PHAR related Operating System: Ubuntu 6.04 + CentOS 5.4 PHP Version: 5.3.2 New Comment: I've got a workaround. The problem seems to be that the build_precommand.php script cannot run on systems that do not have a working version of php. I think the Makefile is doing this for me already but just to be sure I tried changing the shebang from #!/usr/bin/php to my local #!/app/psoft/devl/packages/php/php-5.3.2/sapi/cli/php (based on what I thought the Makefile was doing). I kept running it from the command line and getting things like this (I was adding my own debugging info on lines that begin with // ): /app/psoft/devl/packages/php/php-5.3.2/ext/phar/ hdlmpdu4/blk10.1/dev > ./build_precommand.php <?php /** @file phar.php * @ingroup Phar * @brief class Phar Pre Command * @author Marcus Boerger * @date 2007 - 2008 * * Phar Command */ foreach(array("SPL", "Reflection", "Phar") as $ext) { if (!extension_loaded($ext)) { echo "$argv[0] requires PHP extension $ext.\n"; exit(1); } } if (!class_exists('DirectoryTreeIterator', 0)) { // name == DirectoryTreeIterator // file(dirname('__FILE__') . '/phar/' . strtolower('DirectoryTreeIterator') . '.inc'); // g == __FILE__/phar/$name.inc Segmentation Fault(coredump) Finally I decided to bring over a working php executable from another server and give it a try: /app/psoft/devl/packages/php/php-5.3.2/ext/phar/ hdlmpdu4/blk10.1/dev > which php /app/psoft/devl/bin/php /app/psoft/devl/packages/php/php-5.3.2/ext/phar/ hdlmpdu4/blk10.1/dev > /app/psoft/devl/bin/php --version PHP 5.0.2 (cli) (built: Oct 21 2004 17:00:20) Copyright (c) 1997-2004 The PHP Group Zend Engine v2.0.2, Copyright (c) 1998-2004 Zend Technologies /app/psoft/devl/packages/php/php-5.3.2/ext/phar/ hdlmpdu4/blk10.1/dev > ./build_precommand.php <?php /** @file phar.php * @ingroup Phar * @brief class Phar Pre Command * @author Marcus Boerger * @date 2007 - 2008 * * Phar Command */ foreach(array("SPL", "Reflection", "Phar") as $ext) { if (!extension_loaded($ext)) { echo "$argv[0] requires PHP extension $ext.\n"; exit(1); } } if (!class_exists('DirectoryTreeIterator', 0)) { // name == DirectoryTreeIterator // file(dirname('__FILE__') . '/phar/' . strtolower('DirectoryTreeIterator') . '.inc'); // g == __FILE__/phar/$name.inc // f == Array // f == Array // c == 53 /** @file directorytreeiterator.inc * @ingroup Examples * @brief class DirectoryTreeIterator * @author Marcus Boerger * @date 2003 - 2008 * * SPL - Standard PHP Library */ /** @ingroup Examples * @brief DirectoryIterator to generate ASCII graphic directory trees * @author Marcus Boerger * @version 1.1 */ class DirectoryTreeIterator extends RecursiveIteratorIterator { /** Construct from a path. * @param $path directory to iterate */ function __construct($path) So, the problem is that the php executable that's built as an interem version for running the build_precommand.php script is not able to use the strtolower() function or the dirname() function (as far as my testing got, it bombed on each of those isolated cases). I was able to make a kludge workaround by modifing the Makefile replacing $(PHP_PHARCMD_EXECUTABLE) with my executable, but the next step failed (target ext/phar/phar.phar:). So I had to disable phar. Previous Comments: ------------------------------------------------------------------------ [2010-04-09 00:22:37] holderm at lycos dot com The problem is in build_precommand.php. When I run it it gets to the open curly brace and churns for a couple seconds, then it Seg faults. I'm not sure how to fix it but will try changing it. /app/psoft/devl/packages/php/php-5.3.2/ext/phar/ hdlmpdu4/blk10.1/dev > ./build_precommand.php <?php /** @file phar.php * @ingroup Phar * @brief class Phar Pre Command * @author Marcus Boerger * @date 2007 - 2008 * * Phar Command */ foreach(array("SPL", "Reflection", "Phar") as $ext) { if (!extension_loaded($ext)) { echo "$argv[0] requires PHP extension $ext.\n"; exit(1); } } if (!class_exists('DirectoryTreeIterator', 0)) { Segmentation Fault(coredump) ------------------------------------------------------------------------ [2010-04-07 23:34:47] holderm at lycos dot com I'm getting the same thing with Solaris 10 and gcc 4.4.3. It seems the Makefile is not generating a full ext/phar/phar.php (when compared to ext/phar/phar/phar.php). The code ends with an open curly brace: Generating phar.php Segmentation Fault - core dumped make: *** [ext/phar/phar.php] Error 139 /app/psoft/devl/packages/php/php-5.3.2/ hdlmpdu4/blk10.1/dev > ll ext/phar/phar.php -rw-r--r-- 1 lmpjob lmpjob 351 Apr 7 16:10 ext/phar/phar.php /app/psoft/devl/packages/php/php-5.3.2/ hdlmpdu4/blk10.1/dev > ll ext/phar/phar/phar.php -rwxr-xr-x 1 lmpjob lmpjob 992 Aug 1 2008 ext/phar/phar/phar.php /app/psoft/devl/packages/php/php-5.3.2/ hdlmpdu4/blk10.1/dev > cat ext/phar/phar.php <?php /** @file phar.php * @ingroup Phar * @brief class Phar Pre Command * @author Marcus Boerger * @date 2007 - 2008 * * Phar Command */ foreach(array("SPL", "Reflection", "Phar") as $ext) { if (!extension_loaded($ext)) { echo "$argv[0] requires PHP extension $ext.\n"; exit(1); } } if (!class_exists('DirectoryTreeIterator', 0)) { As far as I can tell this part of the Makefile is where the problem is: ext/phar/phar.php: /app/psoft/devl/packages/php/php-5.3.2/ext/phar/build_precommand.php /app/psoft/devl/packages/php/php-5.3.2/ext/phar/phar/*.inc /app/psoft/devl/packages/php/php-5.3.2/ext/phar/phar/*.php $(SAPI_CLI_PATH) -...@echo "Generating phar.php" @$(PHP_PHARCMD_EXECUTABLE) $(PHP_PHARCMD_SETTINGS) /app/psoft/devl/packages/php/php-5.3.2/ext/phar/build_precommand.php > ext/phar/phar.php My configure options were: /app/psoft/devl/packages/php/php-5.3.2/ hdlmpdu4/blk10.1/dev > cat config.nice #! /bin/sh # # Created by configure './configure' \ '--prefix=/app/psoft/scripts/pkg/php5' \ '--enable-cli' \ '--disable-cgi' \ '--with-bz2' \ '--with-zlib' \ '--with-png-dir=/app/psoft/scripts/pkg/png-1.4.1' \ '--with-gd' \ '--with-oci8=/app/oracle/product/10.2.0' \ "$@" ------------------------------------------------------------------------ [2010-03-30 17:39:38] tony at tonybibbs dot com Same issue on 32bit Ubuntu 9.10 ------------------------------------------------------------------------ [2010-03-26 00:16:11] mm_half3 at yahoo dot com For what it is worth, I had the same issue on Solaris 10 sparc, compiling with gcc-4.3.1, and php-5.32 (tried with stable release and latest development src). Further research found other solaris types getting segmentation faults during php 5.2.xx make test, see http://bugs.php.net/bug.php?id=47824&edit=1 . Which I also could reproduce. Setting CFLAGS=-O1, got php5.32 to compile and make test successfully with phar, and 5.2.xx to compile without fatal errors. The seg fault is probably not a php issue, but something in the gcc version. The make test looks like all the tests run, but there is an issue when the Test Summary is done for both: WARNED TEST SUMMARY --------------------------------------------------------------------- via [ext/pdo_sqlite/tests/common.phpt] SQLite PDO Common: Bug #34630 (inserting streams as LOBs) [ext/pdo_sqlite/tests/bug_34630.phpt] (warn: XFAIL section but test passes) via [ext/sqlite/tests/pdo/common.phpt] SQLite2 PDO Common: Bug #34630 (inserting streams as LOBs) [ext/sqlite/tests/pdo/bug_34630.phpt] (warn: XFAIL section but test passes) ===================================================================== You may have found a problem in PHP. We would like to send this report automatically to the PHP QA team, to give us a better understanding of how the test cases are doing. If you don't want to send it immediately, you can choose "s" to save the report to a file that you can send us later. Do you want to send this report now? [Yns]: s Please send /tmp/php-5.3.2/php_test_results_20100325_2040.txt to qa-repo...@lists.php.net manually, thank you. ------------------------------------------------------------------------ [2010-03-24 17:51:27] paul at boxuk dot com i can also reproduce this, i believe it's something to do with the fix for bug #50829 amended that bug with the details ------------------------------------------------------------------------ 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/bug.php?id=51216 -- Edit this bug report at http://bugs.php.net/bug.php?id=51216&edit=1