PHP. heap corruption detected в phpQuery и Segmentation fault в PHP CLI
После переустановки PHP 5.2.10 столкнулся я с такой проблемой как "linked list corrupt on efree() - heap corruption detected" при использовании библиотеки phpQuery, а также "Segmentation fault" в CLI версии свежеустановленного PHP.
Ошибка "linked list corrupt on efree() - heap corruption detected" проявлялась только в одном месте, и связана была с DOM модулем, как мне казалось. До переустановки я не юзал phpQuery в продакшене, поэтому не мог сказать однозначно повлияла ли это переустановка, или так и было бы с ошибкой.
При запуске любого скрипта в CLI режиме, было нечто подобное:
php -f /www/script.php Segmentation fault
Решение проблемы с Segmentation fault в CLI
Погуглив немного, не нашел ничего путного и запостил на Пыху топик о своей проблеме, пару дней мы думали по этой теме, предлагались разные решения и побороли в первый день "Segmentation fault" в CLI, путем упорядочивания PHP модулей (спасибо пользователю OFF), сейчас у меня так:
extension=mbstring.so extension=simplexml.so extension=spl.so extension=mysqli.so extension=mysql.so extension=session.so extension=mcrypt.so extension=gd.so extension=json.so extension=ctype.so extension=iconv.so extension=hash.so extension=curl.so extension=zlib.so extension=imagick.so extension=ffmpeg.so extension=sphinx.so extension=pcre.so extension=memcache.so extension=memcached.so extension=dom.so
С тех пор CLI работал исправно и работает до сих пор.
Решение проблемы с heap corruption detected в phpQuery
Признаюсь, я грешил на PHP-модуль "php5-dom", однако проблема оказалась не в нем. Ошибка была вида:
[Thu Sep 17 01:48:23 2009] [error] [client 93.111.111.111] ALERT - linked list corrupt on efree() - heap corruption detected (attacker '93.111.111.111', file '/path/to/kinsburg/path/to/libs/phpquery.php', line 5689), referer:
где, 93.111.111.111 - ip-адрес моего локального компьютера (аля клиент)
Решение оказалось совсем для меня не очевидным, во всем оказался виноват "Suhosin Patch", который нужен для обеспечения безопасности. Я просто переустановил PHP, но в этот раз отключил Suhosin.
На эту мысль меня натолкнул пост пользователя OFF с Пыха.ру, за что ему огромное спасибо! Были еще варианты решения этой проблемы, но они не венчались успехом.
В данный момент, я планирую включить снова Suhosin Patch, потому что запускать тот злосчастный скрипт мне необходимо всего раз 3-6 месяцев, а за это время может возникнут патчи бага, либо найдется куда более продуктивное решение.

Комментарии
сухосина фтопку, скрипты на php либо самостоятельно, либо тотальная проверка с оладкой,всех переменных всех методов и классов, с максимальным уровнем предупреждений и исправлением любой баги,любой пустой переменной,с полным осознанием того что написано в скрипте, что он делает и для чего нужен. Во всех подозрительных местах либо написать свой вариант (часто получается изящьнее), либо переименовать переменные (переименовать-переменные =D )
исключить из скрипта символы подавления @ ошибок.
переписать проверки входных данных (если такие есть)
магические кавычки - фтопку только мешают,использовать placeholderы для обращения к базе...
безопасность-безопасность, не надо писать или использовать дырявые скрипты тогда и suhosin не нужен будет...
agat, ага, но не всегда свой код используется (WP, Drupal, etc).
кстати, упорядочивание пхп-экстеншнов — херь полная
единственное, spl надо перед мусклем ставить, а в остальном — бред, по-моему
epsyl, ага, по твоему. Есть целые патчи сортирующие экстеншены в правильном порядке.
Расстановка важна - 100%
epsyl - попробуй на досуге поменять местами, все рухнет...
З.Ы. я пробовал =)
интересно решил проблему
http://php-fpm.anight.org/downloads/freebsd-port/
Pandora, что вы этим хотели сказать?
Оставьте свой комментарий