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

tst_qcamerabackend: crash on exit

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.8
    • Multimedia
    • Linux/X11
    • Multimedia wk 15-16, Multimedia wk 17-18, Multimedia wk 19-20, Multimedia wk 21-22

    Description

      crash on exit during static dtor:

      ==261772==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 (pc 0x7c4478d8a657 bp 0x7c438da55300 sp 0x7c438da55200 T58613)
      ==261772==The signal is caused by a READ memory access.
      ==261772==Hint: address points to the zero page.
      QThreadStorage: Thread 0x502000b1d310 exited after QThreadStorage 2 destroyed
      AddressSanitizer:DEADLYSIGNAL
      QThreadStorage: Thread 0x502001f3fff0 exited after QThreadStorage 2 destroyed
      AddressSanitizer:DEADLYSIGNAL
          #0 0x7c4478d8a657 in QThreadStorageData::get() const /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.cpp:86:23
          #1 0x7c447b3e7bba in QGuiGLThreadContext*& qThreadStorage_localData<QGuiGLThreadContext>(QThreadStorageData&, QGuiGLThreadContext**) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.h:35:18
          #2 0x7c447b3d8d0c in QThreadStorage<QGuiGLThreadContext*>::localData() /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.h:109:14
          #3 0x7c447b3cefdd in QOpenGLContext::currentContext() /home/tim/dev/qt6-dev/qtbase/src/gui/kernel/qopenglcontext.cpp:227:69
          #4 0x7c447b43b330 in currentSurfaceForCurrentContext(QOpenGLContext*) /home/tim/dev/qt6-dev/qtbase/src/gui/rhi/qrhigles2.cpp:597:9
          #5 0x7c447b43af16 in QRhiGles2::ensureContext(QSurface*) const /home/tim/dev/qt6-dev/qtbase/src/gui/rhi/qrhigles2.cpp:626:13
          #6 0x7c447b448d37 in QRhiGles2::destroy() /home/tim/dev/qt6-dev/qtbase/src/gui/rhi/qrhigles2.cpp:1111:5
          #7 0x7c447acda20f in QRhi::~QRhi() /home/tim/dev/qt6-dev/qtbase/src/gui/rhi/qrhi.cpp:8393:8
          #8 0x7c447d20f67b in (anonymous namespace)::State::resetRhi() /home/tim/dev/qt6-dev/qtmultimedia/src/multimedia/video/qvideoframeconverter.cpp:48:9
          #9 0x7c447d20c534 in (anonymous namespace)::State::~State() /home/tim/dev/qt6-dev/qtmultimedia/src/multimedia/video/qvideoframeconverter.cpp:44:9
          #10 0x7c447d21036a in void qThreadStorage_deleteData<(anonymous namespace)::State>(void*, (anonymous namespace)::State*) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.h:84:3
          #11 0x7c447d21032c in QThreadStorage<(anonymous namespace)::State>::deleteData(void*) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.h:99:7
          #12 0x7c4478d8b357 in QThreadStorageData::finish(void**) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.cpp:164:9
          #13 0x7c4478d2b54f in QThreadPrivate::finish(void*)::$_0::operator()() const /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthread_unix.cpp:352:9
          #14 0x7c4478d26624 in void (anonymous namespace)::terminate_on_exception<QThreadPrivate::finish(void*)::$_0>(QThreadPrivate::finish(void*)::$_0&&) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthread_unix.cpp:262:9
          #15 0x7c4478d264ca in QThreadPrivate::finish(void*) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthread_unix.cpp:339:5
          #16 0x7c4478d2a563 in destroy_current_thread_data(void*) /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthread_unix.cpp:102:9
          #17 0x7c4477091690 in __GI___nptl_deallocate_tsd nptl/nptl_deallocate_tsd.c:73:29
          #18 0x7c4477091690 in __GI___nptl_deallocate_tsd nptl/nptl_deallocate_tsd.c:22:1
          #19 0x7c4477094949 in start_thread nptl/pthread_create.c:453:3
          #20 0x7c447712684f  misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
      
      AddressSanitizer can not provide additional info.
      SUMMARY: AddressSanitizer: SEGV /home/tim/dev/qt6-dev/qtbase/src/corelib/thread/qthreadstorage.cpp:86:23 in QThreadStorageData::get() const
      Thread T58613 (videoQueue:src) created by T0 here:
          #0 0x624354de512d in pthread_create (/home/tim/build/build-qt6-dev-clang_17_qt_dev-Debug2/qtmultimedia/tests/auto/integration/qcamerabackend/tst_qcamerabackend+0x11512d) (BuildId: b65dd22b0c8af109)
          #1 0x7c447c170504 in g_system_thread_new debian/build/deb/../../../glib/gthread-posix.c:1323:9
      
      ==261772==ABORTING
      

      it seems that we have a thread-local QRhi instance, which is living on a gstreamer thread. the dtor seems to crash in QGLXContext::makeCurrent during static destruction.

      happened on tst_qcamerabackend. rarely occurs, address sanitizer seems to make it more likely

      Attachments

        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:
            1 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes