For the second time in a row, I find a bug in PHP. This time PHP segfaults due to memory corruption during the request shutdown phase.
When testing your own PHP extensions, it is very important not to miss any memory leaks. Wherever Valgrind shows a memory leak, you need to check your code for bugs. However, sometimes you can find a memory leak in the PHP Core.
When `valgrind php` shows lots of errors like “Conditional jump or move depends on uninitialised value(s)”, chances are that the PHP and PCRE extension were built without Valgrind support.
It’s not very difficult to achieve 100% line coverage. It is more difficult to produce 100% branch coverage. And it is much more difficult (if at all possible) to ensure that all possible code paths are covered.
When writing or debugging PHP extensions, it is very useful to have test coverage. It is also very interesting to know what test covers which files, similar to what PHPUnit generates for PHP.
From time to time you have to deal with someone else’s code. And the code you have to deal with sometimes surprises you. For example, Pimple, a small Dependency Injection Container for PHP; recent versions of which, according to README,
are more focused on performance. Learning something new is always interesting and sometimes funny, and therefore I started to read the code.