由于获得信号33,Pthread“经理”线程崩溃

时间:2014-02-04 23:16:49

标签: pthreads embedded-linux

我在使用pthread库的嵌入式linux上有linux应用程序。不时pthread"经理"线程获得信号33并崩溃。

我如何知道谁在发送信号?

Strace日志:

...
18:15:07 getppid()                      = 30
18:15:07 poll([{fd=31, events=POLLIN}], 1, 2000) = 0
18:15:09 getppid()                      = 30
18:15:09 poll([{fd=31, events=POLLIN}], 1, 2000) = 0
18:15:11 getppid()                      = 30
18:15:11 poll([{fd=31, events=POLLIN}], 1, 2000) = 0
18:15:13 getppid()                      = 30
18:15:13 poll([{fd=31, events=POLLIN}], 1, 2000) = -1 EINTR (Interrupted system call)
18:15:13 --- SIGRT_1 (Unknown signal 33) @ 0 (0) ---
18:15:13 getppid()                      = 30
18:15:13 wait4(-1, [WIFSIGNALED(s) && WTERMSIG(s) == SIGSEGV], WNOHANG|__WCLONE, NULL) = 68
18:15:13 --- SIGSEGV (Segmentation fault) @ 0 (0) ---

1 个答案:

答案 0 :(得分:1)

信号33由pthreads库在内部使用(它被称为SIGSETXID,并且只要进程的一个uid或gids发生更改,就会由库为每个线程引发。)

它不应该导致线程崩溃。为什么你认为这个信号是负责任的?