I have a third-party PHP
script that I am running in the cli
and it is throwing a segmentation fault
, which I am trying now to debug.
Just learned about the valgrind
tool, but most of the guides I can find seem to be for PHP
running in Apache
, not the cli
.
How can I use valgrind
to debug my cli
script and figure out what is causing this segmentation fault
?
EDIT:
Using help from @sudowned it gave me the following, but not sure what it is telling me:
==32363== Invalid read of size 8
==32363== at 0x6A459A: _zend_mm_alloc_canary_int (in /usr/bin/php5)
==32363== by 0x6A4CFD: _zend_mm_realloc_canary_int (in /usr/bin/php5)
==32363== by 0x690CC3: zend_hash_do_resize (in /usr/bin/php5)
==32363== by 0x6925C7: _zend_hash_add_or_update (in /usr/bin/php5)
==32363== by 0x68EA1F: add_assoc_zval_ex (in /usr/bin/php5)
==32363== by 0x69729D: zif_get_defined_constants (in /usr/bin/php5)
==32363== by 0xE393B63: ??? (in /usr/lib/php5/20090626/suhosin.so)
==32363== by 0x6D4B15: zend_do_fcall_common_helper_SPEC (in /usr/bin/php5)
==32363== by 0x6ABD8F: execute (in /usr/bin/php5)
==32363== by 0xE394115: ??? (in /usr/lib/php5/20090626/suhosin.so)
==32363== by 0x6D4805: zend_do_fcall_common_helper_SPEC (in /usr/bin/php5)
==32363== by 0x6ABD8F: execute (in /usr/bin/php5)
==32363== Address 0x1c486147 is not stack'd, malloc'd or (recently) free'd
==32363==
==32363==
==32363== Process terminating with default action of signal 11 (SIGSEGV)
==32363== Access not within mapped region at address 0x1C486147
==32363== at 0x6A459A: _zend_mm_alloc_canary_int (in /usr/bin/php5)
==32363== by 0x6A4CFD: _zend_mm_realloc_canary_int (in /usr/bin/php5)
==32363== by 0x690CC3: zend_hash_do_resize (in /usr/bin/php5)
==32363== by 0x6925C7: _zend_hash_add_or_update (in /usr/bin/php5)
==32363== by 0x68EA1F: add_assoc_zval_ex (in /usr/bin/php5)
==32363== by 0x69729D: zif_get_defined_constants (in /usr/bin/php5)
==32363== by 0xE393B63: ??? (in /usr/lib/php5/20090626/suhosin.so)
==32363== by 0x6D4B15: zend_do_fcall_common_helper_SPEC (in /usr/bin/php5)
==32363== by 0x6ABD8F: execute (in /usr/bin/php5)
==32363== by 0xE394115: ??? (in /usr/lib/php5/20090626/suhosin.so)
==32363== by 0x6D4805: zend_do_fcall_common_helper_SPEC (in /usr/bin/php5)
==32363== by 0x6ABD8F: execute (in /usr/bin/php5)
==32363== If you believe this happened as a result of a stack
==32363== overflow in your program's main thread (unlikely but
==32363== possible), you can try to increase the size of the
==32363== main thread stack using the --main-stacksize= flag.
==32363== The main thread stack size used in this run was 8388608.
==32363==
==32363== HEAP SUMMARY:
==32363== in use at exit: 180,903,362 bytes in 27,691 blocks
==32363== total heap usage: 11,144,829 allocs, 11,117,138 frees, 2,198,841,176 bytes allocated
==32363==
==32363== LEAK SUMMARY:
==32363== definitely lost: 0 bytes in 0 blocks
==32363== indirectly lost: 0 bytes in 0 blocks
==32363== possibly lost: 0 bytes in 0 blocks
==32363== still reachable: 180,903,362 bytes in 27,691 blocks
==32363== suppressed: 0 bytes in 0 blocks
==32363== Reachable blocks (those to which a pointer was found) are not shown.
==32363== To see them, rerun with: --leak-check=full --show-reachable=yes
==32363==
==32363== For counts of detected and suppressed errors, rerun with: -v
==32363== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 37 from 10)