SSL_library_init 在 gdb 下运行时导致 SIGILL [英] SSL_library_init cause SIGILL when running under gdb

查看:32
本文介绍了SSL_library_init 在 gdb 下运行时导致 SIGILL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

尝试使用 gdb 调试程序时,它无法在 OPENSSL_cpuid_setup 中报告 SIGILL.
使用这个简单的代码,我有相同的行为:

Trying to debug a program using gdb, it fails reporting SIGILL in OPENSSL_cpuid_setup.
With this simple code I have the same behaviour with :

#include <openssl/ssl.h>
int main()
{
    SSL_library_init(); 
}

它编译和运行良好,但从回溯后的 gdb 报告开始

It compile and run well but starting with gdb report following backtrace

Program received signal SIGILL, Illegal instruction.
0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
(gdb) where
#0  0xb6b2eb40 in ?? () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
#1  0xb6b2b404 in OPENSSL_cpuid_setup () from /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0
#2  0xb6fdf058 in call_init (l=<optimized out>, argc=1, argv=0xbefff7d4, env=0xbefff7dc) at dl-init.c:78
#3  0xb6fdf134 in _dl_init (main_map=0xb6fff958, argc=1, argv=0xbefff7d4, env=0xbefff7dc) at dl-init.c:126
#4  0xb6fcfda4 in _dl_start_user () from /lib/ld-linux-armhf.so.3
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

如何在 gdb 下运行这样的程序?

How can I run such a program under gdb ?

推荐答案

SSL_library_init 在 gdb 下运行时导致 SIGILL...

SSL_library_init cause SIGILL when running under gdb...

它实际上一直都在这样做,而不仅仅是在 GDB 下.这是启动代码中的正常行为,因为库测试处理器功能.您可以通过发出 handle SIGILL nostop 来安全地忽略它.

It actually does it all the time, and not just under GDB. It is normal behavior in startup code as the library tests for processor features. You can safely ignore it by issuing handle SIGILL nostop.

有关更多详细信息,请参阅 OpenSSL 常见问题中的第 17 项:调试时我在 OpenSSL 期间观察到 SIGILL初始化:为什么?.

See item 17 in the OpenSSL FAQ for more details: When debugging I observe SIGILL during OpenSSL initialization: why?.

这篇关于SSL_library_init 在 gdb 下运行时导致 SIGILL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆