Я использую dlopen () в модуле Apache, который я пишу, чтобы у меня была система плагинов для моего модуля. Я обнаружил, что если я скомпилирую свой модуль, скомпилирую свой плагин и запустю Apache, все будет работать безупречно.
Если, однако, после того, как я все это сделаю, я перекомпилирую свой плагин (сделав небольшое или два небольших изменения в коде плагинов), моя следующая загрузка страницы вызовет сбой Apache. Каждый последующий запрос снова работает отлично. Таким образом, только первая загрузка страницы сразу после компиляции вызывает ошибку segfault.
Я пытался решить эту проблему в течение нескольких дней (я не очень хорош в отладке C), и сегодня я заметил это в своих журналах ошибок apache:
Inconsistency detected by ld.so: dl-close.c: 719: _dl_close: Assertion `map->l_init_called' failed!
Кто-нибудь знает, что происходит? Означает ли это, что это не мой код и я охотился за фантомной ошибкой? Я довольно уверен, что я вызываю dlcose () для каждого вызова dlopen (). Однако эта конкретная ошибка / ошибка возникает, когда я запускаю apache в однопроцессном режиме и начинаю быстро обновлять страницу.