gdbpthreadsqthreadraisecore-file

How to determine reason of pthread_raise(sig=6) in core file with gdb


My app crashes sometime and I cant find the cause. My app is multithread (QThread) and use several QUdpSockets. I think it happens due to the simultaneous access to the socket, but I dont know when and where.

There is results of bt from core file:

#0 0x414596e1 in ?? ()
#1 0x412d731b in pthread_kill (thread=1649, signo=6) at signals.c:69
#2 0x412d76a0 in __pthread_raise (sig=6) at signals.c:200
#3 0x41459395 in ?? ()
#4 0x00000006 in ?? ()
#5 0x41546ff4 in ?? ()
#6 0xbd5fd8bc in ?? ()
#7 0x4145a87d in ?? ()
#8 0x00000006 in ?? ()
#9 0x00000020 in ?? ()
#10 0x00000000 in ?? ()
  1. What is sig=6 and when it emited?
  2. How can I determine the reason of this behavior?
  3. How do I know which -dev libraries are missing (??? positions of the stack)?

Solution

  • Signal number 6 on Linux is SIGABRT - the fact that it's being raised with pthread_raise() seems to indicate that the application has directly called abort() or a failed assert().

    It's likely that the missing parts of your backtrace are in the QT libraries, so try installing the debugging symbols for all of those.