小编san*_*eep的帖子

是什么导致Linux 64位上的backtrace()崩溃(SIGSEGV)

我正在Linux上开发一个应用程序,我希望以特定频率回溯所有正在运行的线程.所以我的用户定义的信号处理程序SIGUSR1(对于所有线程)调用backtrace().

我在我的信号处理程序中发生崩溃(SIGSEGV),该处理程序源自backtrace()调用.我已经在大多数网站上指定了函数的正确参数. http://linux.die.net/man/3/backtrace.

在这种情况下,什么可能使backtrace()崩溃?

要添加更多详细信息:

是什么让我得出结论崩溃在内部回溯是下面的第14帧.onMySignal是信号处理程序SIGUSR1,它调用backtrace.

onMySignal的示例代码是(从backtrace的linux文档中复制)

pthread_mutex_lock( &sig_mutex );

int j, nptrs;
    #define SIZE 100
        void *buffer[100] = {NULL};//or void *buffer[100];
        char **strings;
       nptrs = backtrace(buffer, SIZE);
           pthread_mutex_unlock( &sig_mutex );
Run Code Online (Sandbox Code Playgroud)
(gdb) where
#0  0x00000037bac0e9dd in raise () from 
#1  0x00002aaabda936b2 in skgesigOSCrash () from 
#2  0x00002aaabdd31705 in kpeDbgSignalHandler () 
#3  0x00002aaabda938c2 in skgesig_sigactionHandler () 
#4  <signal handler called>
#5  0x00000037ba030265 in raise () from 
#6  0x00000037ba031d10 in abort () from 
#7  0x00002b6cef82efd7 in os::abort(bool) () from 
#8  0x00002b6cef98205d …
Run Code Online (Sandbox Code Playgroud)

linux backtrace

5
推荐指数
1
解决办法
5393
查看次数

如何在aix上查看正在运行的进程的所有线程堆栈?

如何在AIX机器上查看正在运行的进程的所有线程的堆栈和状态.像linux上的pstack这样的命令或工具也应该有帮助..

我尝试过procstack,但没有帮助.它没有向我显示任何堆栈.虽然没有错误..

有任何想法吗..?

procstack是否需要与使用debig信息编译的进程相关的所有可执行文件和库?

谢谢.

aix stack multithreading state process

2
推荐指数
1
解决办法
6623
查看次数

标签 统计

aix ×1

backtrace ×1

linux ×1

multithreading ×1

process ×1

stack ×1

state ×1