Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. Segmentation fault when exiting when linked against Qt 6.9.1
Forum Updated to NodeBB v4.3 + New Features

Segmentation fault when exiting when linked against Qt 6.9.1

Scheduled Pinned Locked Moved Solved General and Desktop
36 Posts 7 Posters 3.3k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Online
    C Online
    Christian Ehrlicher
    Lifetime Qt Champion
    wrote on 16 Jun 2025, 09:21 last edited by
    #10

    @Axel-Spoerl : dockwidgets... 😛

    Qt Online Installer direct download: https://download.qt.io/official_releases/online_installers/
    Visit the Qt Academy at https://academy.qt.io/catalog

    1 Reply Last reply
    0
    • L Offline
      L Offline
      l3u_
      wrote on 16 Jun 2025, 09:32 last edited by
      #11

      The problem is that the only custom thing I do is the closeEvent override – everything else happens inside the default Qt code … and even if I remove the custom closeEvent, the segfault is the same (which is not really surprising, when I stepped through everything that happens, the function returns, and the crash happens way later, while we're long deep inside Qt …).

      @Christian-Ehrlicher : May I suppose from what you wrote that this is not the first time strange things happen when dock widgets are messed with?! ;-)

      The only thing I can definitely say is that some change from 6.9.0 to 6.9.1 causes this, because it never happens with 6.9.0, and it always happens with 6.9.1 …

      1 Reply Last reply
      0
      • L Offline
        L Offline
        l3u_
        wrote on 16 Jun 2025, 12:21 last edited by
        #12

        Luckily, my desktop is still quite decent, so I could git bisect out the commit that introduced this.

        If I checkout

        commit 19c4db4201e8933fbbbf951809ceff30e99b4458
        QDockWidget: don't access a QMainWindow that's under destruction
        

        everything is fine, no crash. One commit later, at

        commit ab6f1ad77852a427ae73172ca11dacf876a0cbf7
        QMainWindowLayout: Fix leaking of unused tab bars
        

        I get the segfault.

        I would call it a regression …

        1 Reply Last reply
        3
        • A Offline
          A Offline
          Axel Spoerl
          Moderators
          wrote on 16 Jun 2025, 12:23 last edited by
          #13

          Ooops, I am guilty for the guilty commit!

          What's obviously crashing is a QDockWidget. Can you tell us more about those?
          How are they added? how is QDockWidget::setWidget() used? In which state are they, when the crash occurs (docked on the main window / Floating / Tabbed)?

          Software Engineer
          The Qt Company, Oslo

          1 Reply Last reply
          1
          • L Offline
            L Offline
            l3u_
            wrote on 16 Jun 2025, 12:48 last edited by
            #14

            @Axel-Spoerl Hi, nice to meet the right guy at once ;-)

            I meanwhile filed a bug report about this: https://bugreports.qt.io/browse/QTBUG-137755

            For all dock widgets I first instatiate a widget, like this (all are simple QWidgets – with quite complex stuff inside, but still):

            m_registrationPage = new RegistrationPage(this, m_sharedObjects);
            ...
            

            then, I create the dock, format it, set the widget and hide it, like this:

            m_playersDock = new QDockWidget(tr("Anmeldung"), this);
            m_playersDock->setWidget(m_registrationPage);
            formatDockWidget(m_playersDock, QStringLiteral("playersDock"));
            addDockWidget(Qt::TopDockWidgetArea, m_playersDock);
            connect(m_registrationPage, &RegistrationPage::raiseMe, m_playersDock, &QDockWidget::raise);
            m_playersDock->hide();
            

            Where the formatting is:

            void MainWindow::formatDockWidget(QDockWidget *dock, const QString &id)
            {
                dock->setObjectName(id);
                dock->setContextMenuPolicy(Qt::PreventContextMenu);
                dock->setFeatures(QDockWidget::DockWidgetMovable | QDockWidget::DockWidgetFloatable);
            }
            

            When I start the program, all docks are hidden. If I close it again in this state, I get no segfault.

            Opening a database makes them show up, by default attached to the main window and tabbed. When closing the program then, the segfault happens.

            Interestingly, if I close my database again, the docks are hidden again – but still, I get a segfault on closing.

            1 Reply Last reply
            1
            • L Offline
              L Offline
              l3u_
              wrote on 16 Jun 2025, 13:11 last edited by l3u_
              #15

              Btw. I didn't change this code since Qt 5.6 back in 2017 …

              1 Reply Last reply
              0
              • A Offline
                A Offline
                Axel Spoerl
                Moderators
                wrote on 16 Jun 2025, 13:30 last edited by
                #16

                Hm. Looks like I went too far and we have to revert or follow up on this patch.
                Can you do me a favor: Report it as a bug, assign it to me? I'll fix it this week.

                Software Engineer
                The Qt Company, Oslo

                1 Reply Last reply
                2
                • L Offline
                  L Offline
                  l3u_
                  wrote on 16 Jun 2025, 15:18 last edited by
                  #17

                  I already filed one here: https://bugreports.qt.io/browse/QTBUG-137755 – I can't assign it to you though (or better said, I don't know how to do that …)

                  Somebody already commented on it, and mentioned these two PRs:
                  https://codereview.qt-project.org/c/qt/qtbase/+/637198
                  https://codereview.qt-project.org/c/qt/qtbase/+/636652

                  S 1 Reply Last reply 16 Jun 2025, 17:49
                  0
                  • L l3u_
                    16 Jun 2025, 15:18

                    I already filed one here: https://bugreports.qt.io/browse/QTBUG-137755 – I can't assign it to you though (or better said, I don't know how to do that …)

                    Somebody already commented on it, and mentioned these two PRs:
                    https://codereview.qt-project.org/c/qt/qtbase/+/637198
                    https://codereview.qt-project.org/c/qt/qtbase/+/636652

                    S Offline
                    S Offline
                    SGaist
                    Lifetime Qt Champion
                    wrote on 16 Jun 2025, 17:49 last edited by
                    #18

                    @l3u_ done for you :-)

                    Interested in AI ? www.idiap.ch
                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    1
                    • L Offline
                      L Offline
                      l3u_
                      wrote on 16 Jun 2025, 21:23 last edited by
                      #19

                      Thanks :-)

                      1 Reply Last reply
                      0
                      • L Offline
                        L Offline
                        l3u_
                        wrote on 17 Jun 2025, 07:29 last edited by l3u_
                        #20

                        Just to also leave this here: I meanwhile could strip it down to a minimal example producing the crash, cf. the sources attached to https://bugreports.qt.io/browse/QTBUG-137755

                        Produces the crash reliably when linked against Qt 6.9.1. You have to run the program twice: The first time, it exits normally. The second time, when the window geometry and state are restored, it segfaults on exiting.

                        No delete, no deleteLater, nothing special at all …

                        1 Reply Last reply
                        0
                        • A Offline
                          A Offline
                          Axel Spoerl
                          Moderators
                          wrote on 17 Jun 2025, 12:32 last edited by Axel Spoerl
                          #21

                          Great reproducer!
                          Someone decades ago felt like storing unused tab bars for later re-usage in QMainWindowLayout.
                          Those were soft-leaked and taken care off, when QApplication got destroyed.
                          Reading the state back from settings causes the original tab bar (created in the C++ part) to become unused, but not removed from its QMainWindow parent. That ultimately lead to a double delete and the crash.
                          Let's see, if my thorough reviewers let me get away without writing an autotest ;-)

                          Software Engineer
                          The Qt Company, Oslo

                          1 Reply Last reply
                          3
                          • L Offline
                            L Offline
                            l3u_
                            wrote on 18 Jun 2025, 08:35 last edited by
                            #22

                            Wow, that was fast :-) Thanks for the immediate fix! Nice to see my stuff helped here!

                            That was quite deep inside Qt apparently … where will this land? Qt 6.10.0? Or will it be backported?

                            I tried to cherry-pick it to a 6.9.1 checkout to test it, but it seems that's no trivial task …

                            J 1 Reply Last reply 18 Jun 2025, 08:50
                            0
                            • L l3u_
                              18 Jun 2025, 08:35

                              Wow, that was fast :-) Thanks for the immediate fix! Nice to see my stuff helped here!

                              That was quite deep inside Qt apparently … where will this land? Qt 6.10.0? Or will it be backported?

                              I tried to cherry-pick it to a 6.9.1 checkout to test it, but it seems that's no trivial task …

                              J Offline
                              J Offline
                              jsulm
                              Lifetime Qt Champion
                              wrote on 18 Jun 2025, 08:50 last edited by
                              #23

                              @l3u_ You can see in the bug report:
                              Fix Version/s: 6.10.0 Beta2, 6.11.0 FF

                              https://forum.qt.io/topic/113070/qt-code-of-conduct

                              1 Reply Last reply
                              0
                              • L Offline
                                L Offline
                                l3u_
                                wrote on 18 Jun 2025, 13:01 last edited by l3u_
                                #24

                                Ah okay. So no 6.9 backport? I just wondered, because in the respective "Change ID" https://codereview.qt-project.org/c/qt/qtbase/+/653727, it's listed: "Fixes: QTBUG-137755 Pick-to: 6.10 6.9"

                                J 1 Reply Last reply 18 Jun 2025, 13:09
                                0
                                • L l3u_
                                  18 Jun 2025, 13:01

                                  Ah okay. So no 6.9 backport? I just wondered, because in the respective "Change ID" https://codereview.qt-project.org/c/qt/qtbase/+/653727, it's listed: "Fixes: QTBUG-137755 Pick-to: 6.10 6.9"

                                  J Offline
                                  J Offline
                                  jsulm
                                  Lifetime Qt Champion
                                  wrote on 18 Jun 2025, 13:09 last edited by
                                  #25

                                  @l3u_ Yes, it looks like it was cherry picked to 6.9 branch, so may end up in some 6.9.x version :-)

                                  https://forum.qt.io/topic/113070/qt-code-of-conduct

                                  1 Reply Last reply
                                  0
                                  • A Offline
                                    A Offline
                                    Axel Spoerl
                                    Moderators
                                    wrote on 18 Jun 2025, 16:12 last edited by
                                    #26

                                    The fix will land in 6.9.2, which we plan to release on August 14th.

                                    If you want to cherry pick and compile locally, please make sure to pick the following 5 commits in the right order:

                                    1. https://codereview.qt-project.org/c/qt/qtbase/+/653890
                                    2. https://codereview.qt-project.org/c/qt/qtbase/+/653891
                                    3. https://codereview.qt-project.org/c/qt/qtbase/+/653892
                                    4. https://codereview.qt-project.org/c/qt/qtbase/+/653893
                                    5. https://codereview.qt-project.org/c/qt/qtbase/+/653894

                                    Software Engineer
                                    The Qt Company, Oslo

                                    1 Reply Last reply
                                    3
                                    • L Offline
                                      L Offline
                                      l3u_
                                      wrote on 18 Jun 2025, 18:16 last edited by
                                      #27

                                      Nice :-)

                                      I just tried it locally, cherry-picking the exact comments you linked. Worked without a collision on a v6.9.1 checkout.

                                      And – you may already have thought that – I can confirm the segfault is gone now, also for my quite complex use-case :-)

                                      1 Reply Last reply
                                      3
                                      • A Offline
                                        A Offline
                                        Axel Spoerl
                                        Moderators
                                        wrote on 18 Jun 2025, 19:42 last edited by
                                        #28

                                        Great that you are using dock widgets! As you may have suspected: QDockWidget is slightly closer to my heart than other creatures in the widget zoo ;-)

                                        Software Engineer
                                        The Qt Company, Oslo

                                        S 1 Reply Last reply 26 Jun 2025, 10:03
                                        1
                                        • L Offline
                                          L Offline
                                          l3u_
                                          wrote on 19 Jun 2025, 06:01 last edited by
                                          #29

                                          First, it was just a QTabBar interface. But over the years, it got more and more complex, and at some point, I learned about QDockWidgets – and I loved them at first sight ;-) The same as the tab bar if you want – but way more if you need it. The possibility to arrange them as you like and need is really nice. This is actually a powerful tool, with a great user experience. QDockWidgets really rock! They do, from time to time, cause some headache (this is actually not the first bug I filed about them ;-) – but they are really cool.

                                          1 Reply Last reply
                                          2

                                          19/36

                                          16 Jun 2025, 21:23

                                          • Login

                                          • Login or register to search.
                                          19 out of 36
                                          • First post
                                            19/36
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved