2014-10-06 2 views
2

Мое приложение получает ошибку сегментации. Назад журнал трассировки -Стоп-кадр NULL в журналах backtrace

Program received signal SIGSEV, Segmentation fault. 
0x00000000004a5c03 in engine_unlocked_finish() 

(gdb) bt 

#0 0x00000000004a5c03 in engine_unlocked_finish() 
#1 0x00000000004a5d71 in ENGINE_finish() 
#2 0x000000000046a537 in EVP_PKEY_free_it() 
#3 0x000000000046a91b in EVP_PKEY_free() 
#4 0x00000000004b231a in pubkey_cb() 
#5 0x0000000000470c97 in asn1_item_combine_free() 
#6 0x0000000000750f70 in X509_CINF_seq_tt() 
#7 0x00000000010f7d90 in ??() 
#8 0x00000000010f7cf0 in ??() 
#9 0x0000000000000000 in ??() 

StackFrame в #9 интересно. Адрес: 0x0000000000000000. Означает ли это, что стек поврежден даже до того, как он достигнет engine_unlocked_finish()?

+2

Да, вы повредили свою стек кадров. Скомпилируйте, по крайней мере, с помощью 'gcc -Wall -g', возможно, также с' -fsanitize = address'; использовать также [valgrind] (http://valgrind.org/) –

+0

'-fstack-protector-all' также может помочь. – Tomo

ответ

3

Стеклянная рамка на # 9 интересна.

Не совсем. Скорее всего, это то, что X509_CINF_seq_tt является сборкой с ручной кодировкой и не имеет правильных разворачивающих дескрипторов, поэтому все после него в трассировке стека просто подделка.

На самом деле, глядя на это source, X509_CINF_seq_tt даже не функция, поэтому, вероятно, asn1_item_combine_free, который начинает «плохой разматывать».

Смежные вопросы