Сбой сервера C с помощью функции abort() в _UTF8_init() на free()

#c #c #utf-8 #xerces #coredump

#c #c #utf-8 #xerces #coredump

Вопрос:

У меня возникли проблемы с кодом C , загруженным через dlopen() CGI-сервером C . Через некоторое время программа неожиданно выходит из строя, но последовательно при вызове функции управления памятью (например, free(), calloc() и т. Д.) И Создает дамп ядра, подобный этому:

 #0  0x0000000806b252dc in kill () from /lib/libc.so.6
#1  0x0000000804a1861e in raise () from /lib/libpthread.so.2
#2  0x0000000806b2416d in abort () from /lib/libc.so.6
#3  0x0000000806abdb45 in _UTF8_init () from /lib/libc.so.6
#4  0x0000000806abdfcc in _UTF8_init () from /lib/libc.so.6
#5  0x0000000806abeb1d in _UTF8_init () from /lib/libc.so.6
... the rest of the stack
  

Кто-нибудь видел что-то подобное раньше?

Что такое _UTF8_init() и почему функции управления памятью вызывают его?

Комментарии:

1. Сначала найдите проблемы в своем коде. Где-то в остальной части стека находится выполненный вами вызов. Посмотрите на код и использование, связанное с этим.

Ответ №1:

Это пахнет как поврежденная куча, вероятно, из-за переполнения буфера где-то в вашем коде. Попробуйте запустить свою программу с помощью Valgrind и найдите любые ошибки или предупреждения, которые она выдает.

Комментарии:

1. Я пробовал Valgrind, но, кроме двух проблем, связанных с самим кодом Xerces, все казалось в порядке.