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. Strange crash with QPointers in a container
Forum Updated to NodeBB v4.3 + New Features

Strange crash with QPointers in a container

Scheduled Pinned Locked Moved Unsolved General and Desktop
12 Posts 5 Posters 1.2k 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.
  • A Offline
    A Offline
    aart
    wrote on last edited by
    #1

    I'm developping an application where instances of an abstract base class need to keep references to other instances of the same base class. I thought to use Qpointers for that to avoid any possible dangling pointers. But for some reason everything I try results in the application freezing and windows telling me the application is not responding.

    This is where it goes wrong:

    class SomeClass : public QObject{
    Q_OBJECT
    public: 
        ...
    protected:
        QVector<QPointer<SomeClass>> test{ 3 }; 
    }
    

    I have tried multiple container classes: vector QVector QList , all of them result in the application freezing. I'm quite new to Qt. is THere something I'm doing wrong here? Am I making some mistake with my usage of QPointer?

    Thanks in advance!

    Pl45m4P 1 Reply Last reply
    0
    • A Offline
      A Offline
      aart
      wrote on last edited by
      #2

      It's even stranger than I thought:

      having this is allowed:

          QPointer<BaseTOP> a;
          QPointer<BaseTOP> b;
          QPointer<BaseTOP> c;
          QPointer<BaseTOP> d;
          QPointer<BaseTOP> e;
      

      But this is not:

      std::array<QPointer<BaseTOP>, 4> test;
      

      What is going on here?

      Pl45m4P 1 Reply Last reply
      0
      • A aart

        It's even stranger than I thought:

        having this is allowed:

            QPointer<BaseTOP> a;
            QPointer<BaseTOP> b;
            QPointer<BaseTOP> c;
            QPointer<BaseTOP> d;
            QPointer<BaseTOP> e;
        

        But this is not:

        std::array<QPointer<BaseTOP>, 4> test;
        

        What is going on here?

        Pl45m4P Offline
        Pl45m4P Offline
        Pl45m4
        wrote on last edited by
        #3

        @aart

        Hi,

        when does it crash? Where do you initialize your class objects?


        If debugging is the process of removing software bugs, then programming must be the process of putting them in.

        ~E. W. Dijkstra

        A 1 Reply Last reply
        0
        • Pl45m4P Pl45m4

          @aart

          Hi,

          when does it crash? Where do you initialize your class objects?

          A Offline
          A Offline
          aart
          wrote on last edited by
          #4

          @Pl45m4
          I have a single threaded application, i create the objects in QGraphhicsView's mouseDoubleClickEvent function. Nothing strange i can think of ...

          1 Reply Last reply
          0
          • Christian EhrlicherC Online
            Christian EhrlicherC Online
            Christian Ehrlicher
            Lifetime Qt Champion
            wrote on last edited by
            #5

            Still no answer where exactly it is crashing and what's the code where it is crashing + backtrace....

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

            A 1 Reply Last reply
            0
            • A aart

              I'm developping an application where instances of an abstract base class need to keep references to other instances of the same base class. I thought to use Qpointers for that to avoid any possible dangling pointers. But for some reason everything I try results in the application freezing and windows telling me the application is not responding.

              This is where it goes wrong:

              class SomeClass : public QObject{
              Q_OBJECT
              public: 
                  ...
              protected:
                  QVector<QPointer<SomeClass>> test{ 3 }; 
              }
              

              I have tried multiple container classes: vector QVector QList , all of them result in the application freezing. I'm quite new to Qt. is THere something I'm doing wrong here? Am I making some mistake with my usage of QPointer?

              Thanks in advance!

              Pl45m4P Offline
              Pl45m4P Offline
              Pl45m4
              wrote on last edited by
              #6

              @aart said in Strange crash with QPointers in a container:

              This is where it goes wrong:

              class SomeClass : public QObject{
              Q_OBJECT
              public:
              ...
              protected:
              QVector<QPointer<SomeClass>> test{ 3 };
              }

              I dont think that this is the part of your code where it crashes :)
              Where do you push the objects in your vector? Where do you try to access them / use the pointers?
              Without any code, nobody can help you.

              @aart said in Strange crash with QPointers in a container:

              QVector<QPointer<SomeClass>> test{ 3 };

              This doesnt look wrong (QVector, Lenght 3, with QPointers to SomeClass-object)


              If debugging is the process of removing software bugs, then programming must be the process of putting them in.

              ~E. W. Dijkstra

              1 Reply Last reply
              2
              • Christian EhrlicherC Christian Ehrlicher

                Still no answer where exactly it is crashing and what's the code where it is crashing + backtrace....

                A Offline
                A Offline
                aart
                wrote on last edited by
                #7

                @Christian-Ehrlicher The thing is that it doesnt actaully crash but just gets stuck and stops responding, I cant really post all the code here because that would be way too much. Is there any way i can get some sort of error log that people can get information out of?

                1 Reply Last reply
                0
                • Christian EhrlicherC Online
                  Christian EhrlicherC Online
                  Christian Ehrlicher
                  Lifetime Qt Champion
                  wrote on last edited by
                  #8

                  Use a debugger to see where it hangs. I don't see why it should 'hang' because of a pointer in a vector.

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

                  A 1 Reply Last reply
                  3
                  • mrjjM Offline
                    mrjjM Offline
                    mrjj
                    Lifetime Qt Champion
                    wrote on last edited by
                    #9

                    Hi
                    I tried your SomeClass in a small project but nothing happened.
                    Im not really sure its related to QPointer as there is no reason why it should
                    do odd stuff. Code seems pretty normal.

                    Do you have s small sample that will produce the "odd part" ?

                    1 Reply Last reply
                    0
                    • Christian EhrlicherC Christian Ehrlicher

                      Use a debugger to see where it hangs. I don't see why it should 'hang' because of a pointer in a vector.

                      A Offline
                      A Offline
                      aart
                      wrote on last edited by
                      #10

                      @Christian-Ehrlicher
                      Okay so using the debugger i found where the problem lays. I'm very new to qt and qt creator, so i didnt understand how to use the debugger :p The issue was indeed not in the class with the vector but elsewhere in the code where i was using the data stored in the vector. Thanks for the help everyone. The thread can be closed.

                      1 Reply Last reply
                      1
                      • Christian EhrlicherC Online
                        Christian EhrlicherC Online
                        Christian Ehrlicher
                        Lifetime Qt Champion
                        wrote on last edited by
                        #11

                        @aart said in Strange crash with QPointers in a container:

                        The thread can be closed.

                        This can be done by you by editing the first post and setting it to resolved. :)

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

                        aha_1980A 1 Reply Last reply
                        0
                        • Christian EhrlicherC Christian Ehrlicher

                          @aart said in Strange crash with QPointers in a container:

                          The thread can be closed.

                          This can be done by you by editing the first post and setting it to resolved. :)

                          aha_1980A Offline
                          aha_1980A Offline
                          aha_1980
                          Lifetime Qt Champion
                          wrote on last edited by
                          #12

                          @Christian-Ehrlicher said in Strange crash with QPointers in a container:

                          @aart said in Strange crash with QPointers in a container:

                          The thread can be closed.

                          This can be done by you by editing the first post and setting it to resolved. :)

                          No, just use the button Topic Tools. There is an entry Mark as Resolved.

                          Qt has to stay free or it will die.

                          1 Reply Last reply
                          1

                          • Login

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