У меня происходит сбой в sigtimedwait (), который произошел после запуска блока кода, указанного ниже, в функции потока, выполняющей бесконечное количество времени. Использование sigtimedwait в моем приложении, запущенном на debian 9.3, для поиска сигнала SIGUSR1, и вот как яЯ использую его.
my_fun()
{
sigset_t set;
struct timespec tm;
siginfo_t info;
sigemptyset(&set);
sigaddset(&set, SIGUSR1);
int s = pthread_sigmask(SIG_BLOCK, &set, NULL);
if (0 != s)
{
raise(SIGABRT);
}
tm.tv_sec = 1;
tm.tv_nsec = 0;
for (;;){
if (SIGUSR1 == sigtimedwait(&set, &info, &tm)) --> Line 1077
{
}
} //end of for(infinite loop)
}
<My_filename.cpp>
мое приложение падает на строке # 1077 и обратная трассировка выглядит следующим образом:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/local/bin/nelrtuapp_lan'.
Program terminated with signal SIGABRT, Aborted.
#0 0x00007fe781b32d9c in __GI___sigtimedwait (set=<optimized out>,
info=0x7ffe52a6c240, timeout=0x7ffe52a6c2c0) at ../sysdeps/unix/sysv/linux
/sigtimedwait.c:54
54 ../sysdeps/unix/sysv/linux/sigtimedwait.c: No such file or directory.
[Current thread is 1 (Thread 0x7fe782d74740 (LWP 7096))]
(gdb) bt
#0 0x00007fe781b32d9c in __GI___sigtimedwait (set=<optimized out>,
info=0x7ffe52a6c240, timeout=0x7ffe52a6c2c0) at ../sysdeps/unix/sysv/linux
/sigtimedwait.c:54
#1 0x0000555d6d53d659 in my_fun() at My_filename.cpp:1077
Я пытаюсь найти исходный код, чтобы узнать больше о функции __GI___sigtimedwaitфайла sigtimedwait.c, не повезло найти файл, который имеет ту же функцию и ожидал бы повышения SIGABRT.Я часто вхожу в следующий файл по всему GITHUB, code.woboq.
https://searchcode.com/codesearch/view/10496366/
любые указатели или выводы по этому вопросу будет принята с благодарностью.