Утверждение почти наверняка указывает на некоторое повреждение памяти до вызова malloc
. Учитывая, что утверждение срабатывает в xmpp_ctx_new
, что представляется очень ранним вызовом в библиотеке libstrophe
XMPP, я бы сказал, что вполне вероятно, что ошибка в вашем коде (хотя она может не быть, если вы выделяете несколько контекстов XMPP - не уверен, есть ли для этого причина).
Если вы выделяете только один контекст XMPP, вы можете изолировать ошибку в своем коде, вставив вызов malloc(sizeof(xmpp_ctx_t))
перед вызовом xmpp_ctx_new
, и вы увидите, что проблема не в libstrophe. (Между прочим, я почти уверен, что проблема не в этом вызове xmpp_ctx_new
, потому что я google сделал исходный код функции (mem = 0x0 выглядел, вероятно, вызовет проблемы), и увидел, что она в основном уменьшена до malloc
и несколько инициализаторов - чтение исходного кода обычно является хорошей стратегией для поиска ошибок в OSS.)