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. When closing application Exception Triggered.
Forum Updated to NodeBB v4.3 + New Features

When closing application Exception Triggered.

Scheduled Pinned Locked Moved Unsolved General and Desktop
24 Posts 5 Posters 2.3k Views 2 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.
  • mrjjM mrjj

    Hi
    Nothing is shown in the debugger call stack ?

    SPlattenS Offline
    SPlattenS Offline
    SPlatten
    wrote on last edited by SPlatten
    #3

    @mrjj , yes the call stack, but there all go directly to assembler. The actual stop point is in:

    RPCRT4!NDRCContextBinding:
        0x759ede63 <+0x0013>  cpp. sword ptr [eax+4], 0FEDCBA98h
    

    Kind Regards,
    Sy

    JonBJ mrjjM 2 Replies Last reply
    0
    • SPlattenS SPlatten

      @mrjj , yes the call stack, but there all go directly to assembler. The actual stop point is in:

      RPCRT4!NDRCContextBinding:
          0x759ede63 <+0x0013>  cpp. sword ptr [eax+4], 0FEDCBA98h
      
      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #4

      @SPlatten
      If we know nothing about Trainer, how would we answer?

      Try replacing Trainer trainer with Trainer *trainer = new Trainer. Hopefully that avoids destructor being called. Does it still crash?

      SPlattenS 1 Reply Last reply
      0
      • SPlattenS SPlatten

        @mrjj , yes the call stack, but there all go directly to assembler. The actual stop point is in:

        RPCRT4!NDRCContextBinding:
            0x759ede63 <+0x0013>  cpp. sword ptr [eax+4], 0FEDCBA98h
        
        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #5

        Hi
        Ok that is not super informative.

        I think its maybe in the clean up phase something explodes.

        You can try this
        https://stackoverflow.com/questions/16735413/how-can-i-make-qtcreator-break-on-exceptions

        It tells the debugger to stop where excpetion is thrown. maybe it can give a hint on whap happens.

        Also I would try

        // MainWindow w;
        // w.show();

        to see if its in trainer OR in the Mainwindow something happens.

        Do you load or link any other DLLS etc ?

        SPlattenS 1 Reply Last reply
        0
        • JonBJ JonB

          @SPlatten
          If we know nothing about Trainer, how would we answer?

          Try replacing Trainer trainer with Trainer *trainer = new Trainer. Hopefully that avoids destructor being called. Does it still crash?

          SPlattenS Offline
          SPlattenS Offline
          SPlatten
          wrote on last edited by
          #6

          @JonB , I've just tried exactly that, its not calling the destructor now, but is still coming up with exactly the same exception dialog when the application is closed.

          Kind Regards,
          Sy

          1 Reply Last reply
          0
          • mrjjM mrjj

            Hi
            Ok that is not super informative.

            I think its maybe in the clean up phase something explodes.

            You can try this
            https://stackoverflow.com/questions/16735413/how-can-i-make-qtcreator-break-on-exceptions

            It tells the debugger to stop where excpetion is thrown. maybe it can give a hint on whap happens.

            Also I would try

            // MainWindow w;
            // w.show();

            to see if its in trainer OR in the Mainwindow something happens.

            Do you load or link any other DLLS etc ?

            SPlattenS Offline
            SPlattenS Offline
            SPlatten
            wrote on last edited by
            #7

            @mrjj said in When closing application Exception Triggered.:

            https://stackoverflow.com/questions/16735413/how-can-i-make-qtcreator-break-on-exceptions

            Tried that, no different.

            Kind Regards,
            Sy

            mrjjM 1 Reply Last reply
            0
            • SPlattenS SPlatten

              @mrjj said in When closing application Exception Triggered.:

              https://stackoverflow.com/questions/16735413/how-can-i-make-qtcreator-break-on-exceptions

              Tried that, no different.

              mrjjM Offline
              mrjjM Offline
              mrjj
              Lifetime Qt Champion
              wrote on last edited by
              #8

              @SPlatten
              Hi
              And we are sure its not in MainWindow ?

              SPlattenS 1 Reply Last reply
              0
              • mrjjM mrjj

                @SPlatten
                Hi
                And we are sure its not in MainWindow ?

                SPlattenS Offline
                SPlattenS Offline
                SPlatten
                wrote on last edited by
                #9

                @mrjj , I've just commented out everything in the MainWindow destructor, recompiled and run and its still doing the same.

                Kind Regards,
                Sy

                mrjjM JonBJ 2 Replies Last reply
                0
                • SPlattenS SPlatten

                  @mrjj , I've just commented out everything in the MainWindow destructor, recompiled and run and its still doing the same.

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #10

                  @SPlatten
                  Hi
                  ok. and you not having any members of QObject base in the class ?
                  I mean as non pointer in MainWindow.
                  Its sometimes possible to get double deletes that way.

                  SPlattenS 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @SPlatten
                    Hi
                    ok. and you not having any members of QObject base in the class ?
                    I mean as non pointer in MainWindow.
                    Its sometimes possible to get double deletes that way.

                    SPlattenS Offline
                    SPlattenS Offline
                    SPlatten
                    wrote on last edited by
                    #11

                    @mrjj , at the moment the application is in very early stages for the MainWindow class contains just:

                    DataSets* mpDataSetsDlg;
                    Ui::MainWindow* mpui;
                    

                    In the constructor:

                    MainWindow::MainWindow(QWidget* pParent) : QMainWindow(pParent),
                                                               mpDataSetsDlg(nullptr),
                                                               mpui(new Ui:MainWindow)
                    {
                        mpui->setupUi(this);
                        connect(mpui->btnDataSets, &QPushButton->clicked,
                                this, &MainWindow::dataSetsBtnClicked);
                    }    
                    

                    In the destructor:

                    void MainWindow::~MainWindow()
                    {
                        if ( mpDataSetsDlg != nullptr )
                        {
                            delete mpDataSetsDlg;
                            mpDataSetsDlg = nullptr;
                        }
                        delete mpui;
                        mpui = nullptr;
                    }
                    

                    Kind Regards,
                    Sy

                    1 Reply Last reply
                    0
                    • SPlattenS SPlatten

                      @mrjj , I've just commented out everything in the MainWindow destructor, recompiled and run and its still doing the same.

                      JonBJ Offline
                      JonBJ Offline
                      JonB
                      wrote on last edited by
                      #12

                      @SPlatten
                      Remove all your #includes, other than what is required to get a minimal Qt program open a main window. It should be 10 lines long. No Trainer object No Trainer include files. Does it work?

                      If your program only crashes with Trainer and its include files, I still don't understand what we can say since we don't even know what it is.

                      SPlattenS 1 Reply Last reply
                      0
                      • JonBJ JonB

                        @SPlatten
                        Remove all your #includes, other than what is required to get a minimal Qt program open a main window. It should be 10 lines long. No Trainer object No Trainer include files. Does it work?

                        If your program only crashes with Trainer and its include files, I still don't understand what we can say since we don't even know what it is.

                        SPlattenS Offline
                        SPlattenS Offline
                        SPlatten
                        wrote on last edited by
                        #13

                        @JonB , I modified main.cpp to:

                        #include <QApplication> //Add this
                        #include "main window.h"
                        //#include "trainer.h"
                        
                        int main(int argc, char* argv[])
                        {
                            //Trainer trainer(argc, argv);
                            QApplication a(argc, argv);
                            MainWindow w;
                            w.show();
                            return a.exec();
                            //return trainer.exec();
                        }
                        

                        Rebuilt and it does exactly the same, crash location is in exactly the same place.

                        Kind Regards,
                        Sy

                        J.HilkJ JonBJ 2 Replies Last reply
                        0
                        • SPlattenS SPlatten

                          @JonB , I modified main.cpp to:

                          #include <QApplication> //Add this
                          #include "main window.h"
                          //#include "trainer.h"
                          
                          int main(int argc, char* argv[])
                          {
                              //Trainer trainer(argc, argv);
                              QApplication a(argc, argv);
                              MainWindow w;
                              w.show();
                              return a.exec();
                              //return trainer.exec();
                          }
                          

                          Rebuilt and it does exactly the same, crash location is in exactly the same place.

                          J.HilkJ Offline
                          J.HilkJ Offline
                          J.Hilk
                          Moderators
                          wrote on last edited by
                          #14

                          @SPlatten well, in the stack trace, what's the first entry, thats from your code ?

                          you know that you can step back, when you're in assembler code right?


                          Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                          Q: What's that?
                          A: It's blue light.
                          Q: What does it do?
                          A: It turns blue.

                          SPlattenS 1 Reply Last reply
                          0
                          • SPlattenS SPlatten

                            @JonB , I modified main.cpp to:

                            #include <QApplication> //Add this
                            #include "main window.h"
                            //#include "trainer.h"
                            
                            int main(int argc, char* argv[])
                            {
                                //Trainer trainer(argc, argv);
                                QApplication a(argc, argv);
                                MainWindow w;
                                w.show();
                                return a.exec();
                                //return trainer.exec();
                            }
                            

                            Rebuilt and it does exactly the same, crash location is in exactly the same place.

                            JonBJ Offline
                            JonBJ Offline
                            JonB
                            wrote on last edited by JonB
                            #15

                            @SPlatten
                            Remove #include "main window.h" and replace MainWindow w; by QMainWindow w; (with presumably #include <QMainWindow>).

                            If that does not work, since it is the minimal Qt application what has changed for you since you last successfully built/ran any Qt GUI program?

                            SPlattenS 1 Reply Last reply
                            0
                            • JonBJ JonB

                              @SPlatten
                              Remove #include "main window.h" and replace MainWindow w; by QMainWindow w; (with presumably #include <QMainWindow>).

                              If that does not work, since it is the minimal Qt application what has changed for you since you last successfully built/ran any Qt GUI program?

                              SPlattenS Offline
                              SPlattenS Offline
                              SPlatten
                              wrote on last edited by
                              #16

                              @JonB , to be honest, it could be the build of the laptop, its an older version of Qt:

                              Qt Creator 4.4.1
                              Based on Qt 5.9.2 (MSVC 2015, 32 bit)
                              

                              I have no control over the laptop or the version of Qt being used, this is supplied by the company I am contracted to.

                              Kind Regards,
                              Sy

                              1 Reply Last reply
                              0
                              • J.HilkJ J.Hilk

                                @SPlatten well, in the stack trace, what's the first entry, thats from your code ?

                                you know that you can step back, when you're in assembler code right?

                                SPlattenS Offline
                                SPlattenS Offline
                                SPlatten
                                wrote on last edited by
                                #17

                                @J-Hilk , I've expanded the stack trace and there is no call the traces back to my source, the first call is in Function: RtlGetAppContainerNamedObjectPath, File: ntdll

                                Kind Regards,
                                Sy

                                J.HilkJ 1 Reply Last reply
                                0
                                • SPlattenS SPlatten

                                  @J-Hilk , I've expanded the stack trace and there is no call the traces back to my source, the first call is in Function: RtlGetAppContainerNamedObjectPath, File: ntdll

                                  J.HilkJ Offline
                                  J.HilkJ Offline
                                  J.Hilk
                                  Moderators
                                  wrote on last edited by
                                  #18

                                  @SPlatten thats unfortunate

                                  since this is a basic and small project so far, can you share, the minimal example ?

                                  that means probably only your custom MainWindow, so we can check ourselves, and check it against different Qt versions as well


                                  Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                                  Q: What's that?
                                  A: It's blue light.
                                  Q: What does it do?
                                  A: It turns blue.

                                  JonBJ SPlattenS 2 Replies Last reply
                                  0
                                  • J.HilkJ J.Hilk

                                    @SPlatten thats unfortunate

                                    since this is a basic and small project so far, can you share, the minimal example ?

                                    that means probably only your custom MainWindow, so we can check ourselves, and check it against different Qt versions as well

                                    JonBJ Offline
                                    JonBJ Offline
                                    JonB
                                    wrote on last edited by
                                    #19

                                    @J-Hilk
                                    That is why I suggested @SPlatten should use QMainWindow, not his own MainWindow, to test. If that still does not work (I'm not sure if he has answered that), then something is fundamentally with his Qt/environment. I would do that before examining anything about a custom MainWindow or header file.

                                    1 Reply Last reply
                                    0
                                    • J.HilkJ J.Hilk

                                      @SPlatten thats unfortunate

                                      since this is a basic and small project so far, can you share, the minimal example ?

                                      that means probably only your custom MainWindow, so we can check ourselves, and check it against different Qt versions as well

                                      SPlattenS Offline
                                      SPlattenS Offline
                                      SPlatten
                                      wrote on last edited by
                                      #20

                                      @J-Hilk , in doing this, I decided to go one better. I did the following in Qt Creator:

                                      1. Clicked on File top line menu
                                      2. Selected New File or Project...
                                      3. Selected Application and Qt Widgets Application
                                      4. Clicked on the Choose... button
                                      5. Entered test into Name: text box and clicked the Next button
                                      6. Checked only Desktop Qt 5.9.2 MSVC2015 32bit in Kit Selection
                                      7. Clicked Next button
                                      8. Clicked Next button
                                      9. Clicked Finish button
                                      10. Right clicked project and selected Rebuild
                                      11. Run application in debug mode and clicked the close widget in the MainWindow

                                      Same thing happens, application stops and Exception Triggered dialog is displayed.

                                      Kind Regards,
                                      Sy

                                      JoeCFDJ 1 Reply Last reply
                                      0
                                      • SPlattenS SPlatten

                                        @J-Hilk , in doing this, I decided to go one better. I did the following in Qt Creator:

                                        1. Clicked on File top line menu
                                        2. Selected New File or Project...
                                        3. Selected Application and Qt Widgets Application
                                        4. Clicked on the Choose... button
                                        5. Entered test into Name: text box and clicked the Next button
                                        6. Checked only Desktop Qt 5.9.2 MSVC2015 32bit in Kit Selection
                                        7. Clicked Next button
                                        8. Clicked Next button
                                        9. Clicked Finish button
                                        10. Right clicked project and selected Rebuild
                                        11. Run application in debug mode and clicked the close widget in the MainWindow

                                        Same thing happens, application stops and Exception Triggered dialog is displayed.

                                        JoeCFDJ Offline
                                        JoeCFDJ Offline
                                        JoeCFD
                                        wrote on last edited by
                                        #21

                                        @SPlatten Is it a 32bit bug? Try to make a 64bit build to see if you have the same problem.

                                        SPlattenS 1 Reply Last reply
                                        0
                                        • JoeCFDJ JoeCFD

                                          @SPlatten Is it a 32bit bug? Try to make a 64bit build to see if you have the same problem.

                                          SPlattenS Offline
                                          SPlattenS Offline
                                          SPlatten
                                          wrote on last edited by
                                          #22

                                          @JoeCFD , thank you, thats a shame, the problem is the target is 32 bit so regardless of if it works in 64 bit, thats not an option.

                                          Kind Regards,
                                          Sy

                                          JoeCFDJ 1 Reply Last reply
                                          0

                                          • Login

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