PHP's segmentation faults GDB-fu
Sometimes PHP segfaults (crashes) in a production environment, where Xdebug is often not available (and shouldn't be either of course). In those cases trying to figure out where in your code PHP crashes can be hard to find out. In some cases it's a real bug in PHP, where you would need some more intricate knowledge of PHP's internals — in many cases it's rather a coding error that provides you with infinite recursion.
Trying to figure out the functions that were called in a loop is not trivial if you do not possess GDB- and PHP internals-fu. However, because we as PHP developers are lazy, provide a few GDB tricks to make this easier. First of all, it's only really going to work if you haven't stripped the symbols from your PHP and Apache binaries. Secondly, you still need to have the PHP source lying around somewhere — preferably from where you've built PHP. After you're in GDB (either by opening an already existing core dump, or when the process aborts after starting it from GDB) you can "source" the macros that make your life easier. Basically you have to run this on the GDB prompt:
(gdb) source ~/dev/php/php-5.2dev/.gdbinit
If you then run the following on the GDB prompt, you get a nice stack trace — but without variable information that you're used to from seeing Xdebug traces.
(gdb) zbacktrace
The start of the output looks like:
[0xd03bb330] a() /tmp/recur.php:5 [0xd03bb530] d() /tmp/recur.php:4 [0xd03bb730] c() /tmp/recur.php:3 [0xd03bb930] b() /tmp/recur.php:2 ...
In PHP 5.3 and higher, PHP will not segfault when you do infinite recursion as the engine has been changed. Instead, PHP would simply run out of memory and show an error not unlike:
Fatal error: Allowed memory size of 134217728 bytes exhausted at /home/derick/dev/php/php-5.3dev/Zend/zend_execute.h:157 (tried to allocate 523800 bytes) in /tmp/recur.php on line 2
Update: Instead of "dump_bt executor_globals.current_execute_data" you can simply run "zbacktrace".
Life Line
A very well camouflaged Little Owl.
It's in a hole in a church tower, in a tiny village in North Norfolk.
#photography #Birds #BirdPhotography #BirdsOfFediverse #NaturePhotography #Norfolk
Survey postbox collection times
Survey housenumbers
Specify whether places take fees to visit
Survey shop types
Specify whether there are cycleways
Specify whether pedestrian crossings have islands
Determine the heights of kerbs
Specify whether traffic signals have tactile indications that it's safe to cross
Specify whether crosswalks have tactile paving
Specify whether kerbs have tactile paving
Specify drinking water types
Survey whether benches have backrests
Determine information board names
Survey tactile paving on steps
Specify whether steps have a ramp
Specify whether steps have handrails
Specify path surfaces
Survey opening hours
Specify whether roads have sidewalks
Specify road surfaces
Created 4 entrances; Updated an apartments building, a house building, and a building
Updated a restaurant
I walked 3.2km in 29m48s
I walked 5.4km in 53m10s


Shortlink
This article has a short URL available: https://drck.me/psfg-6ho