Отрицательный номер при вызове malloc в gdb

Хорошо ... Я знаю, что на эти вопросы уже есть 1.000.000 ответов, но я потратил не менее 6 эффективных часов, выяснив это; и я искал его сотни раз и не нашел ни одной записи об этом. Поэтому я подумал, что добавлю решение своей проблемы здесь.

Вывод

Если я прокомментировал эти две строки в моих .conf-файлах в файле /etc/apache2/[[SERVER-NAME].conf:

php_admin_value engine Off
IPCComTimeout 31

, у меня нет идеи, что они делают или как они туда попали, - но он находится в каждом из моих .conf -файлов. И если я удалю эти строки и , убедитесь, что в /etc/apache2/sites-enabled/ -палочке есть символическая ссылка , тогда она не загружает index.php - и все работает так, как должно.

Вся история

У меня VirtualMin установлен на Ubuntu 16.04 VPS. Я обновился до версии PHP 7.2. Вскоре после этого я обновил версию Ubuntu и ударил ошибку «Смещение ядра: отключено». Поэтому мне пришлось удалить последнюю версию Ubuntu, и когда моя ОС снова загрузится: BOOM! Я получил ошибку, о которой говорит его пост: для каждого сайта на моем VPS он просто загружал index.php, а не показывал его.

Я пробовал всевозможные вещи:

  • Удалил PHP7.2 и установил PHP5.6 (теперь я знаю, что PHP-версия не имеет к этому никакого отношения; это конфигурация apache, которая нуждается в работе).
  • Пробовал включать и отключать модули apache, на существующей установке, но без везения.
  • Затем I полностью удалил apache и установил его снова, после чего проблема была еще там!
  • Пробовал играть с настройкой Virutal Server в VirtualMin (Webmin >> Servers >> Apache Webserver).
  • Проверьте конфигурацию на одном виртуальном сервере (Virtualmin >> System Settings >> Re-Check Configuration) ... Этот шаг был довольно приятным, поскольку он сообщил, что модуль в Apache отсутствует; после чего я мог включить его с помощью a2enmod [MODULE_NAME]. И я нашел имя модуля Googling. Мне пришлось активировать около 6-8 модулей, прежде чем я прошел этот этап проверки - и потребовалось несколько минут до того, как закончился кеш, - так что это был утомительный шаг.
  • И наконец, я понял вышеприведенное заключение - вместе с символическими ссылками, - и затем я получил его на работу. Я должен был пройти через это для каждого сайта на моем VPS.

2
задан jww 6 March 2019 в 09:12
поделиться

1 ответ

Вам необходимо скомпилировать с отладочной информацией (используя -g в случае GCC). Установка отладочной информации для библиотеки C (в пакетах libc6-dbg или glibc-debuginfo во многих системах) также может помочь.

Вы также можете привести malloc к указателю на функцию правильного типа, например:

(gdb) print ((void * (*) (size_t)) malloc) (5 * 1024 * 1024)
$1 = (void *) 0x7ffff65b2010
0
ответ дан Florian Weimer 6 March 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: