Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Installation and Deployment
  4. [solved] My app crashed after using macdeployqt (Qt5.2 RC 1)
Forum Updated to NodeBB v4.3 + New Features

[solved] My app crashed after using macdeployqt (Qt5.2 RC 1)

Scheduled Pinned Locked Moved Installation and Deployment
48 Posts 2 Posters 22.7k Views 1 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.
  • G Offline
    G Offline
    gaojinhsu
    wrote on last edited by
    #6

    -rwxr-xr-x 1 gint_develop staff 4731256 Dec 16 13:50 Myapp.app/Contents/MacOS/Myapp

    [quote author="SGaist" date="1386927636"]Check what the application permissions are, specifically the executable flag[/quote]

    1 Reply Last reply
    0
    • SGaistS Offline
      SGaistS Offline
      SGaist
      Lifetime Qt Champion
      wrote on last edited by
      #7

      The bundle also ?

      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
      0
      • G Offline
        G Offline
        gaojinhsu
        wrote on last edited by
        #8

        Myapp.app:

        drwxr-xr-x 8

        and I run my app on shell:

        QEventLoop: Cannot be used without QApplication
        QObject::moveToThread: Current thread (0x103c02330) is not the object's thread (0x103d17fa0).
        Cannot move to target thread (0x103c02330)

        On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
        QObject::moveToThread: Current thread (0x103c02330) is not the object's thread (0x103d17fa0).
        Cannot move to target thread (0x103c02330)

        On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
        QEventLoop: Cannot be used without QApplication
        QEventLoop: Cannot be used without QApplication
        objc[14722]: Class NotificationReceiver is implemented in both /Users/gint_develop/Documents/maserati/branches/build-OneChecker-Desktop_Qt_5_2_0_clang_64bit-Release/OneChecker/1Checker.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets and /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets. One of the two will be used. Which one is undefined.
        objc[14722]: Class QCocoaPageLayoutDelegate is implemented in both /Users/gint_develop/Documents/maserati/branches/build-OneChecker-Desktop_Qt_5_2_0_clang_64bit-Release/OneChecker/1Checker.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport and /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport. One of the two will be used. Which one is undefined.
        objc[14722]: Class QCocoaPrintPanelDelegate is implemented in both /Users/gint_develop/Documents/maserati/branches/build-OneChecker-Desktop_Qt_5_2_0_clang_64bit-Release/OneChecker/1Checker.app/Contents/Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport and /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport. One of the two will be used. Which one is undefined.
        QObject::moveToThread: Current thread (0x103c02330) is not the object's thread (0x103d17fa0).
        Cannot move to target thread (0x103c02330)

        On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
        This application failed to start because it could not find or load the Qt platform plugin "cocoa".

        Available platform plugins are: cocoa, minimal, offscreen.

        Reinstalling the application may fix this problem.
        Abort trap: 6

        1 Reply Last reply
        0
        • SGaistS Offline
          SGaistS Offline
          SGaist
          Lifetime Qt Champion
          wrote on last edited by
          #9

          Check also the plugins/dependencies with otool. There's something that is pulling your system's Qt rather than the one bundled with your application

          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
          0
          • G Offline
            G Offline
            gaojinhsu
            wrote on last edited by
            #10

            I checked all the frameworks and plugins, nothing was referencing my local Qt on my system, that's why I think it's weird.

            [quote author="SGaist" date="1387268642"]Check also the plugins/dependencies with otool. There's something that is pulling your system's Qt rather than the one bundled with your application[/quote]

            1 Reply Last reply
            0
            • SGaistS Offline
              SGaistS Offline
              SGaist
              Lifetime Qt Champion
              wrote on last edited by
              #11

              Did you also check what

              @DYLD_PRINT_LIBRARIES=1./MyDirectory/Myapp.app/Contents/MacOS/Myapp@

              returns ?

              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
              0
              • G Offline
                G Offline
                gaojinhsu
                wrote on last edited by
                #12

                It seems macdeployqt tool didn't copy libqcorewlanbearer.dylib and libqgenericbearer.dylib files into the bundle, now I did that by hand and changed their dependency, but how to tell the app to use the .dylib files in the bundle

                QEventLoop: Cannot be used without QApplication
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/plugins/bearer/libqcorewlanbearer.dylib
                dyld: loaded: /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtCore.framework/Versions/5/QtCore
                dyld: loaded: /usr/lib/libpcap.A.dylib
                dyld: loaded: /System/Library/Frameworks/CoreWiFi.framework/Versions/A/CoreWiFi
                QObject::moveToThread: Current thread (0x103c05300) is not the object's thread (0x103d133e0).
                Cannot move to target thread (0x103c05300)

                On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/plugins/bearer/libqgenericbearer.dylib
                QObject::moveToThread: Current thread (0x103c05300) is not the object's thread (0x103d133e0).
                Cannot move to target thread (0x103c05300)

                On Mac OS X, you might be loading two sets of Qt binaries into the same process. Check that all plugins are compiled against the right Qt binaries. Export DYLD_PRINT_LIBRARIES=1 and check that only one set of binaries are being loaded.
                QEventLoop: Cannot be used without QApplication
                QEventLoop: Cannot be used without QApplication
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/plugins/platforms/libqcocoa.dylib
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtPrintSupport.framework/Versions/5/QtPrintSupport
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets
                dyld: loaded: /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtGui.framework/Versions/5/QtGui
                objc[25913]: Class NotificationReceiver is implemented in both /Users/username/Documents/maserati/branches/build-OneChecker-Desktop_Qt_5_2_0_clang_64bit-Release/OneChecker/1Checker.app/Contents/Frameworks/QtWidgets.framework/Versions/5/QtWidgets and /Users/username/Qt5.2.0/5.2.0/clang_64/lib/QtWidgets.framework/Versions/5/QtWidgets. One of the two will be used. Which one is undefined.

                1 Reply Last reply
                0
                • SGaistS Offline
                  SGaistS Offline
                  SGaist
                  Lifetime Qt Champion
                  wrote on last edited by
                  #13

                  You seem to also have the platforms plugins loaded from your installed Qt

                  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
                  0
                  • G Offline
                    G Offline
                    gaojinhsu
                    wrote on last edited by
                    #14

                    yeah,
                    1) macdeployqt tool copied platforms plugins into the bundle,but my app still loaded them from my installed Qt
                    2)macdeployqt tool didn’t copy libqcorewlanbearer.dylib and libqgenericbearer.dylib files into the bundle

                    so it's qt's bug? how to fix it ? I have copied libqcorewlanbearer.dylib and libqgenericbearer.dylib files into the bundle by hand and changed their dependency, how to make my app load the .dylib files in the bundle ?

                    [quote author="SGaist" date="1387355148"]You seem to also have the platforms plugins loaded from your installed Qt[/quote]

                    1 Reply Last reply
                    0
                    • SGaistS Offline
                      SGaistS Offline
                      SGaist
                      Lifetime Qt Champion
                      wrote on last edited by
                      #15

                      I would go with otool on each and every library and verify that the dependencies all point to @executable_path/../Frameworks/THE_Qt_FRAMEWORK and also verify the library IDs

                      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
                      0
                      • G Offline
                        G Offline
                        gaojinhsu
                        wrote on last edited by
                        #16

                        Thanks for your advice, but the point is frameworks and executable flag don't reference the plugins directly , so how can i know which one is referencing the plugins? I think my app loads right frameworks but wrong plugins. and otool can get information of frameworks reference only

                        1 Reply Last reply
                        0
                        • SGaistS Offline
                          SGaistS Offline
                          SGaist
                          Lifetime Qt Champion
                          wrote on last edited by
                          #17

                          That's what DYLD_PRINT_LIBRARIES=1 helps you find, you can also guess a bit knowing what you are using in your software (image formats, printing, networking etc…)

                          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
                          0
                          • G Offline
                            G Offline
                            gaojinhsu
                            wrote on last edited by
                            #18

                            well, let me describe it in this way,
                            all the plugins my app needs are in the bundle, but app still loads the plugins installed on my system at run-time. And thanks again for your patience.

                            1 Reply Last reply
                            0
                            • G Offline
                              G Offline
                              gaojinhsu
                              wrote on last edited by
                              #19

                              for example, libqcorewlanbearer.dylib is in the bundle, the following is the "otool -L" information

                              ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                              /Users/gint_develop/Desktop/1Checker.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib:
                              libqcorewlanbearer.dylib (compatibility version 0.0.0, current version 0.0.0)
                              /System/Library/Frameworks/Foundation.framework/Versions/C/Foundation (compatibility version 300.0.0, current version 945.16.0)
                              /System/Library/Frameworks/SystemConfiguration.framework/Versions/A/SystemConfiguration (compatibility version 1.0.0, current version 453.19.0)
                              /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN (compatibility version 1.0.0, current version 1.0.0)
                              /System/Library/Frameworks/Security.framework/Versions/A/Security (compatibility version 1.0.0, current version 55179.11.0)
                              @executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.2.0, current version 5.2.0)
                              @executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.2.0, current version 5.2.0)
                              /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
                              /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)
                              /usr/lib/libobjc.A.dylib (compatibility version 1.0.0, current version 228.0.0)
                              /System/Library/Frameworks/CoreFoundation.framework/Versions/A/CoreFoundation (compatibility version 150.0.0, current version 744.18.0)
                              //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                              but when I use "DYLD_PRINT_LIBRARIES=1", I find the app loaded a wrong libqcorewlanbearer.dylib and its dependencies.

                              ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                              dyld: loaded: /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/plugins/bearer/libqcorewlanbearer.dylib
                              dyld: loaded: /System/Library/Frameworks/CoreWLAN.framework/Versions/A/CoreWLAN
                              dyld: loaded: /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/lib/QtNetwork.framework/Versions/5/QtNetwork
                              dyld: loaded: /Users/gint_develop/Qt5.2.0/5.2.0/clang_64/lib/QtCore.framework/Versions/5/QtCore
                              dyld: loaded: /usr/lib/libpcap.A.dylib
                              ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                              you can get my bundle "here":https://drive.google.com/uc?id=0B0lyTclIaUOPOUI4MmpZaHZiN3c&export=download

                              1 Reply Last reply
                              0
                              • SGaistS Offline
                                SGaistS Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on last edited by
                                #20

                                Ok… There might be something funky with qt.conf's usage, I tried to start your application setting QT_PLUGIN_PATH to point to your bundle plugin path and it's working fine.

                                Have a look at the Mac Deployment Documentation, they explain how to add the path to the bundle plugin directory when starting your application, that should workaround your current problem

                                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
                                0
                                • G Offline
                                  G Offline
                                  gaojinhsu
                                  wrote on last edited by
                                  #21

                                  I have viewed the docment, and I think the content of my qt.conf file is right, it does point to my bundle plugin path. : (

                                  1 Reply Last reply
                                  0
                                  • SGaistS Offline
                                    SGaistS Offline
                                    SGaist
                                    Lifetime Qt Champion
                                    wrote on last edited by
                                    #22

                                    I think it is (or at least I don't see any reason right now that it would not be)

                                    That's why I suggested to use the addLibraryPath() technique in between

                                    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
                                    0
                                    • G Offline
                                      G Offline
                                      gaojinhsu
                                      wrote on last edited by
                                      #23

                                      then I added the following code to main.cpp, didn't work at all.

                                      QDir dir(QApplication::applicationDirPath());

                                      qDebug()<<dir.absolutePath();
                                      
                                      dir.cdUp();
                                      
                                       qDebug()<<dir.absolutePath();
                                      
                                      dir.cd("PlugIns");
                                      
                                      qDebug()<<dir.absolutePath();
                                      
                                      QCoreApplication::addLibraryPath(dir.absolutePath());
                                      
                                      1 Reply Last reply
                                      0
                                      • SGaistS Offline
                                        SGaistS Offline
                                        SGaist
                                        Lifetime Qt Champion
                                        wrote on last edited by
                                        #24

                                        And if you use setLibraryPath ?

                                        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
                                        0
                                        • G Offline
                                          G Offline
                                          gaojinhsu
                                          wrote on last edited by
                                          #25

                                          Like this? it doesn't work either.

                                          QDir dir(QApplication::applicationDirPath());
                                          qDebug()<<dir.absolutePath();
                                          dir.cdUp();
                                          qDebug()<<dir.absolutePath();
                                          dir.cd("PlugIns");
                                          qDebug()<<dir.absolutePath();
                                          QApplication::setLibraryPaths(QStringList(dir.absolutePath()));

                                          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