Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-124467

[qttest] sigint can cause infinite loop in qttest executables using libnvrtc

    XMLWordPrintable

Details

    • Linux/X11

    Description

      when `ctrl-c`ing i sometimes (but not always end up in an infinite signal handler loop):

      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      

      it reliably happens with the `tst_qmediaplayerbackend` test case in qtmultimedia when setting the backend to gstreamer, e.g. via `QT_MEDIA_BACKEND=gstreamer`. the issue seems to be triggered by using the gstreamer cuda plugin (which in turn uses libnvrtc)

      strace output:

      ➜  build-qt6-dev-clang_17_qt_dev-Debug2 QT_MEDIA_BACKEND=gstreamer strace -e trace=signal /home/tim/build/build-qt6-dev-clang_17_qt_dev-Debug2/qtmultimedia/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend                 
      rt_sigaction(SIGRT_1, {sa_handler=0x717bb38948a0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x717bb3842990}, NULL, 8) = 0
      rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      ********* Start testing of tst_QMediaPlayerBackend *********
      Config: Using QtTest library 6.8.0, Qt 6.8.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Ubuntu Clang 17.0.6 (++20240124120726+6009708b4367-1~exp1~20240124120743.47)), ubuntu 23.10
      sigaltstack({ss_sp=0x717bb0723000, ss_flags=0, ss_size=32768}, NULL) = 0
      rt_sigaction(SIGHUP, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGINT, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGQUIT, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGABRT, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGILL, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGBUS, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGFPE, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGSEGV, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGPIPE, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigaction(SIGTERM, {sa_handler=0x717bb8126ed0, sa_mask=[HUP INT QUIT ILL ABRT BUS FPE SEGV PIPE TERM], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESETHAND|SA_SIGINFO|0xffffffff00000000, sa_restorer=0x717bb3842990}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      QDEBUG : tst_QMediaPlayerBackend::initTestCase() "qrc:/testdata/busAv1.webm"
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      ^Cstrace: Process 14472 detached
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      Received signal 2 (SIGINT) sent by PID 3 UID 0
               initTestCase function time: 2798ms, total time: 2798ms
      

      with -nocrashhandler, the strace looks like:

      ➜  build-qt6-dev-clang_17_qt_dev-Debug2 QT_MEDIA_BACKEND=gstreamer strace -e trace=signal /home/tim/build/build-qt6-dev-clang_17_qt_dev-Debug2/qtmultimedia/tests/auto/integration/qmediaplayerbackend/tst_qmediaplayerbackend  -nocrashhandler
      rt_sigaction(SIGRT_1, {sa_handler=0x72169b6948a0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x72169b642990}, NULL, 8) = 0
      rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      ********* Start testing of tst_QMediaPlayerBackend *********
      Config: Using QtTest library 6.8.0, Qt 6.8.0 (x86_64-little_endian-lp64 shared (dynamic) debug build; by Ubuntu Clang 17.0.6 (++20240124120726+6009708b4367-1~exp1~20240124120743.47)), ubuntu 23.10
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      QDEBUG : tst_QMediaPlayerBackend::initTestCase() "qrc:/testdata/busAv1.webm"
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
      rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
      ^Cstrace: Process 14452 detached
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              timblechmann tim blechmann
              timblechmann tim blechmann
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:

                Gerrit Reviews

                  There are no open Gerrit changes