PHP7 bindings segfaults
|Reported by:||Victor Sakovich||Owned by:||Olly Betts|
I have issue while running Xapian with CentOS7 x86_64. My environment is:
~ cat /etc/redhat-release CentOS Linux release 7.3.1611 (Core) ~ rpm -qa | grep php php71w-common-7.1.2-1.w7.x86_64 php71w-cli-7.1.2-1.w7.x86_64 xapian-bindings-php7-1.4.3-1.el7.x86_64 ~ php -i | grep -A 3 Xapian Xapian Support => enabled Xapian Compiled Version => 1.4.3 Xapian Linked Version => 1.4.3
PHP packages are taken from https://webtatic.com/projects/yum-repository/ , and Xapian packages are compiled from the source.
The issue is that PHP segfaults. For example "gdb php" run with "-i" option results in:
Program received signal SIGSEGV, Segmentation fault. 0x00005555557e1b09 in _zval_ptr_dtor () (gdb) backtrace #0 0x00005555557e1b09 in _zval_ptr_dtor () #1 0x00005555557e0082 in free_zend_constant () #2 0x00005555558038a2 in zend_hash_destroy () #3 0x00005555557f2039 in zend_shutdown () #4 0x000055555578fffb in php_module_shutdown () #5 0x00005555556252c5 in main () (gdb)
Here is additional information as reported by valgrind:
~ USE_ZEND_ALLOC=0 valgrind --tool=memcheck php -v ==12785== Memcheck, a memory error detector ==12785== Copyright (C) 2002-2015, and GNU GPL'd, by Julian Seward et al. ==12785== Using Valgrind-3.11.0 and LibVEX; rerun with -h for copyright info ==12785== Command: php -v ==12785== PHP 7.1.2 (cli) (built: Feb 18 2017 11:22:37) ( NTS ) Copyright (c) 1997-2017 The PHP Group Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies ==12785== ==12785== HEAP SUMMARY: ==12785== in use at exit: 8,107 bytes in 94 blocks ==12785== total heap usage: 21,692 allocs, 21,598 frees, 2,271,702 bytes allocated ==12785== ==12785== LEAK SUMMARY: ==12785== definitely lost: 4,320 bytes in 28 blocks ==12785== indirectly lost: 2,269 bytes in 36 blocks ==12785== possibly lost: 0 bytes in 0 blocks ==12785== still reachable: 1,518 bytes in 30 blocks ==12785== suppressed: 0 bytes in 0 blocks ==12785== Rerun with --leak-check=full to see details of leaked memory ==12785== ==12785== For counts of detected and suppressed errors, rerun with: -v ==12785== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
Please let me know if you need to provide additional information.