我使用RSA_sign()创建dkim签名。有时,极不可预测的代码只会崩溃
我得到像这样的gdb转储
Thread 39 (Thread 0x41401940 (LWP 31921)):
#0 0x0000003b9dacc3bb in BN_div () from /lib64/libcrypto.so.6
#1 0x0000003b9daceb40 in BN_mod_inverse () from /lib64/libcrypto.so.6
#2 0x0000003b9dacb609 in BN_BLINDING_create_param () from /lib64/libcrypto.so.6
#3 0x0000003b9dadc9f7 in RSA_setup_blinding () from /lib64/libcrypto.so.6
#4 0x0000003b9daee954 in ?? () from /lib64/libcrypto.so.6
#5 0x0000003b9daef56b in ?? () from /lib64/libcrypto.so.6
#6 0x0000003b9da6e965 in RSA_sign () from /lib64/libcrypto.so.6
#7 0x0000000000403e7f in dkim_create (headers=0x2aaaac001840, headerc=7,
......., v=0) at firm-dkim.c:145
这里有firm-dkim.c http://code.google.com/p/firm-dkim/source/browse/trunk/firm-dkim.c
如何进一步调试?
由于 拉姆
答案 0 :(得分:1)
好的我觉得我收到了错误 这里的代码 firm-dkim.c。 不为RSA * rsa_private分配任何内存,第48行
这个未分配的内存区域用于RSA_sign()和RSA_free()
我认为这必然导致段错误。我现在已分配内存,我正在生产中运行守护进程。希望现在不再有段错误了。