#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, все казалось в порядке.