#php #saxon-c
#php #saxon-c
Вопрос:
Пробовал на свежей ubuntu 16.04 (как со стандартным php 7.0, так и с ondrej php 7.4, со стандартным ядром и ядром hwe), а также на свежей ubuntu 18.04 со стандартным php 7.4.
Последующее редактирование: также протестировано 20.04, как стандартный, так и последний apache2 php от ondrej ppa.
Установил Saxon 1.2.1 HE и скомпилировал модуль php, используя официальные инструкции, все прошло хорошо, всего несколько предупреждений компилятора. Apache запускается успешно, модуль загружается и отображается в phpinfo.
Но он простейший тест, когда вызов compileFromString
приводит к тому, что apache worker блокируется следующим образом:
futex(0x7fdc97e01a00, FUTEX_WAKE_PRIVATE, 1) = 0 futex(0x7fdc97e01a68, FUTEX_WAIT_PRIVATE, 0, NULL # застрял здесь навсегда
На этом этапе перезапуск apache приводит к жалобам из-за вышеупомянутого застрявшего дочернего элемента:
[Чт Окт 01 10:35:02.712717 2020] [ядро: ошибка] [pid 1021] AH00046: дочерний процесс 1053 по-прежнему не завершается, отправляя SIGKILL
Прикрепление с помощью gdb показывает:
#0 0x00007f26ea102376 в pthread_cond_wait@@GLIBC_2.3.2 () из цели:/lib/x86_64-linux-gnu/libpthread.so.0 #1 0x00007f26e1c951e3 в ?? () из target:/usr/lib/libsaxonhec.so #2 0x0000000000000005 в ?? () #3 0x0000000000000005 в ?? () #4 0x0000000000000000 в ?? ()
Комментарии:
1. Привет, похоже, это связано с ошибкой, описанной здесь: saxonica.plan.io/issues/4420 . Исправленный файл php7_saxon.cpp можно найти здесь saxonica.plan.io/issues/4371
2. Действительно, это связано с saxonica.plan.io/issues/4371 , к сожалению, исправление, похоже, не относится к производственному классу. Не стесняйтесь добавлять его в качестве ответа.