- Und hier die Auflösung des Rätsels warum "Service_task" manchmal in sigsuspend() hängt und dann wieder man in der mutex/futex - abundzu wird ein Signalhandler aufgerufen während der thread an der mutex/futex wartet, und der signal-Handler wartet mittels sigsuspend auf SIGRTMIN1-SIGRTMIN8.
- # strace -p 1075
- Process 1075 attached
- rt_sigsuspend(~[RTMIN RT_1 RT_8]
- # gdb strack trace:
- 0xb6cfc5f8 in do_sigsuspend (set=0xb51be72c) at ../sysdeps/unix/sysv/linux/sigsuspend.c:32
- 32 ../sysdeps/unix/sysv/linux/sigsuspend.c: No such file or directory.
- (gdb) where
- #0 0xb6cfc5f8 in do_sigsuspend (set=0xb51be72c) at ../sysdeps/unix/sysv/linux/sigsuspend.c:32
- #1 __GI___sigsuspend (set=0xb51be72c) at ../sysdeps/unix/sysv/linux/sigsuspend.c:46
- #2 0x00160a40 in SysTaskWaitForResume ()
- #3 0x0016058c in task_signalhandler ()
- #4 <signal handler called>
- #5 0xb6d954f0 in syscall () from /lib/libc.so.6
- #6 0xb5fa27d4 in QMutexPrivate::wait(int) () from /usr/lib/libQtCore.so.4
- #7 0xb5f9eb9c in QMutex::lockInternal() () from /usr/lib/libQtCore.so.4
- #8 0xb6ac5b48 in data_in(char*, int) () from /usr/lib/libvt.so
- #9 0xb6a8dbec in codesys_send () from /usr/lib/libvt.so
- #10 0xb6b567a0 in IsoVtLib_NumericValue () from /usr/lib/libIsobus.so
- #11 0xb6b55574 in isocmd_numericvalue () from /usr/lib/libIsobus.so
- #12 0xb52799a0 in ?? ()
- #13 0xb52799a0 in ?? ()
- Backtrace stopped: previous frame identical to this frame (corrupt stack?)
- (gdb) quit
- A debugging session is active.
Untitled
Posted by Anonymous on Wed 16th Jan 2019 14:24
raw | new post
Submit a correction or amendment below (click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.