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. Qt 6.3.1 painful....
Forum Updated to NodeBB v4.3 + New Features

Qt 6.3.1 painful....

Scheduled Pinned Locked Moved Unsolved General and Desktop
31 Posts 5 Posters 7.1k 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.
  • JoeCFDJ JoeCFD

    I guess you are able to use c++20 now. Adding logging code into your threads may enable you to find issues more quickly.
    https://mariusbancila.ro/blog/2021/07/03/writing-a-simple-logging-function-in-c20/

    D Offline
    D Offline
    DerReisende
    wrote on last edited by
    #21

    @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

    static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
        const QByteArray localMsg = msg.toLocal8Bit();
    #ifdef NDEBUG
        const auto out_msg = fmt::format("\t{}", localMsg.constData());
    #else
        const char *function = context.function ? context.function : "";
        const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                          localMsg.constData(),
                                          context.line,
                                          function);
    #endif
        switch (type) {
            case QtDebugMsg:
                spdlog::debug(out_msg);
                break;
            case QtInfoMsg:
                spdlog::info(out_msg);
                break;
            case QtWarningMsg:
                spdlog::warn(out_msg);
                break;
            case QtCriticalMsg:
                spdlog::error(out_msg);
                break;
            case QtFatalMsg:
                spdlog::critical(out_msg);
                spdlog::shutdown();
                break;
        }
    }
    
    void init_logging() {
        init_spdlog();
    
        qInstallMessageHandler(qt_message_handler);
    } 
    

    I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

    SPlattenS JoeCFDJ 2 Replies Last reply
    0
    • D DerReisende

      @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

      static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
          const QByteArray localMsg = msg.toLocal8Bit();
      #ifdef NDEBUG
          const auto out_msg = fmt::format("\t{}", localMsg.constData());
      #else
          const char *function = context.function ? context.function : "";
          const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                            localMsg.constData(),
                                            context.line,
                                            function);
      #endif
          switch (type) {
              case QtDebugMsg:
                  spdlog::debug(out_msg);
                  break;
              case QtInfoMsg:
                  spdlog::info(out_msg);
                  break;
              case QtWarningMsg:
                  spdlog::warn(out_msg);
                  break;
              case QtCriticalMsg:
                  spdlog::error(out_msg);
                  break;
              case QtFatalMsg:
                  spdlog::critical(out_msg);
                  spdlog::shutdown();
                  break;
          }
      }
      
      void init_logging() {
          init_spdlog();
      
          qInstallMessageHandler(qt_message_handler);
      } 
      

      I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

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

      @DerReisende , thank you, I've done this already for several years, here is the output to my log file:

      XMLMPAM start-up
      Listening to any local IP address on port: 8123
      S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
      "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
      S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
      "label"
      S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
      "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
      S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
      S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode]
      "test99"
      S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
      "label"
      S000000000009E000000007104T09:56:50.075T:D:"label"
      S000000000010E000000007113T09:56:50.084T:D:"label"
      S000000000011E000000007128T09:56:50.099T:D:"label"
      Process:  Arg[0]: 8123
      Process:  Arg[1]: 8124
      Process:  Arg[2]: 24150
      Process:  Arg[3]: f1
      Process is NOT running, launching
      S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram]
      Starting: f1:mdFIO
      Registering decoder for file simon.js, function: blnDecodeFIOcmd
      Process:  Arg[0]: 8123
      Process:  Arg[1]: 8125
      Process:  Arg[2]: 24150
      Process:  Arg[3]: s1
      Process is NOT running, launching
      S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL
      Registering decoder for file simon.js, function: blnDecodeSQLcmd
      Process:  Arg[0]: 8123
      Process:  Arg[1]: 8126
      Process:  Arg[2]: 24150
      Process:  Arg[3]: x1
      Process is NOT running, launching
      S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML
      Registering decoder for file simon.js, function: blnDecodeXMLcmd
      S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram]
      PID for mdXML: 24171, On port: 8123
      Process:  mdXML started
      S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123
      Process:  mdFIO started
      S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123
      Process:  mdSQL started
      Client connecting...
      Client connecting...
      Client connecting...
      Client connected
      Client connected
      Client connected
      !s1!Client connecting...
      !s1!Client connected
      !f1!Client connecting...
      !f1!Client connected
      !x1!Client connecting...
      !x1!Client connected
      !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm
      !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand]
      2022-08-17 08:56:50,  Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000043E000000000131T09:56:50.347D:Length
      !f1!S000000000043E000000000131T09:56:50.347D:Length: 1
      !f1!S000000000044E000000000131T09:56:50.347D:2022-08
      !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000045E000000000131T09:56:50.347D:Length
      !f1!S000000000045E000000000131T09:56:50.347D:Length: 2
      !f1!S000000000046E000000000131T09:56:50.347D:2022-08
      !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000047E000000000131T09:56:50.347D:Length
      !f1!S000000000047E000000000131T09:56:50.347D:Length: 4
      !f1!S000000000048E000000000131T09:56:50.348D:2022-08
      !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000049E000000000131T09:56:50.348D:Length
      !f1!S000000000049E000000000131T09:56:50.348D:Length: 8
      !f1!S000000000050E000000000131T09:56:50.348D:2022-08
      !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000051E000000000131T09:56:50.348D:Length
      !f1!S000000000051E000000000131T09:56:50.348D:Length: 4
      !f1!S000000000052E000000000131T09:56:50.348D:2022-08
      !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000053E000000000131T09:56:50.348D:Length
      !f1!S000000000053E000000000131T09:56:50.348D:Length: 8
      !f1!S000000000054E000000000132T09:56:50.348D:2022-08
      !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000055E000000000132T09:56:50.348D:Length
      !f1!S000000000055E000000000132T09:56:50.348D:Length: 27
      !f1!S000000000056E000000000132T09:56:50.348D:2022-08
      !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000057E000000000132T09:56:50.348D:Length
      !f1!S000000000057E000000000132T09:56:50.348D:Length: 1
      !f1!S000000000058E000000000132T09:56:50.348D:2022-08
      !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000059E000000000132T09:56:50.348D:Length
      !f1!S000000000059E000000000132T09:56:50.348D:Length: 2
      !f1!S000000000060E000000000132T09:56:50.348D:2022-08
      !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000061E000000000132T09:56:50.348D:Length
      !f1!S000000000061E000000000132T09:56:50.348D:Length: 4
      !f1!S000000000062E000000000132T09:56:50.348D:2022-08
      !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
      !f1!S000000000063E000000000132T09:56:50.348D:Length
      !f1!S000000000063E000000000132T09:56:50.348D:Length: 8
      !f1!S000000000064E000000000132T09:56:50.348D:2022-08
      !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
      !f1!S000000000065E000000000132T09:56:50.348D:Length
      !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615
      !f1!S000000000066E000000000132T09:56:50.349D:2022-08
      !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
      !f1!S000000000067E000000000132T09:56:50.349D:Length
      !f1!S000000000067E000000000132T09:56:50.349D:Length: 3
      !f1!S000000000068E000000000132T09:56:50.349D:2022-08
      !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
      !f1!S000000000069E000000000132T09:56:50.349D:Length
      !f1!S000000000069E000000000132T09:56:50.349D:Length: 4
      !f1!S000000000070E000000000132T09:56:50.349D:2022-08
      !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
      !f1!S000000000071E000000000132T09:56:50.349D:Positio
      !f1!S000000000071E000000000132T09:56:50.349D:Position: -15
      !f1!S000000000072E000000000133T09:56:50.349D:Length
      !f1!S000000000072E000000000133T09:56:50.349D:Length: 5
      !f1!S000000000073E000000000133T09:56:50.349D:2022-08
      !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50,  Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
      !f1!S000000000074E000000000133T09:56:50.349D:Length
      !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615
      !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}}
      !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"connect","output":"connected"}
      S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread.
      (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000)
      !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"}
      !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]}
      !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
      !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
      !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
      !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
      !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
      !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
      !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
      !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
      !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
      !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
      !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
      {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
      S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread.
      (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000)
      S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread.
      (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
      

      Where:
      S is the sequence number
      E is the elapsed time
      T is the time stamp
      T:C Type:Critical warning
      T:D Type:Debug message
      T:F Type:Fatal error
      T:W Type:Warning
      L is the line number
      P is the path and file name

      This is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.

      
      10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ...
      
      got fallback qt version 0x50f02
      2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
      2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
      2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
      2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
      

      Found this:
      https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22

      Kind Regards,
      Sy

      D 1 Reply Last reply
      0
      • D DerReisende

        @JoeCFD You don't need c++20 to do that, QMessageLogContext does give you the same information if you install a proper message handler:

        static void qt_message_handler(QtMsgType type, [[maybe_unused]] const QMessageLogContext &context, const QString &msg) {
            const QByteArray localMsg = msg.toLocal8Bit();
        #ifdef NDEBUG
            const auto out_msg = fmt::format("\t{}", localMsg.constData());
        #else
            const char *function = context.function ? context.function : "";
            const auto out_msg = fmt::format("\t{} [LINE:{}, {}]",
                                              localMsg.constData(),
                                              context.line,
                                              function);
        #endif
            switch (type) {
                case QtDebugMsg:
                    spdlog::debug(out_msg);
                    break;
                case QtInfoMsg:
                    spdlog::info(out_msg);
                    break;
                case QtWarningMsg:
                    spdlog::warn(out_msg);
                    break;
                case QtCriticalMsg:
                    spdlog::error(out_msg);
                    break;
                case QtFatalMsg:
                    spdlog::critical(out_msg);
                    spdlog::shutdown();
                    break;
            }
        }
        
        void init_logging() {
            init_spdlog();
        
            qInstallMessageHandler(qt_message_handler);
        } 
        

        I am using spdlog and fmt::format for logging and formatting but in the end you will get almost the same details for all Qt logging calls as with your example.

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

        @DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.

        D 1 Reply Last reply
        0
        • SPlattenS SPlatten

          @DerReisende , thank you, I've done this already for several years, here is the output to my log file:

          XMLMPAM start-up
          Listening to any local IP address on port: 8123
          S000000000003E000000000374T09:56:43.345T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
          "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000004E000000000407T09:56:43.378T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
          "label"
          S000000000005E000000000408T09:56:43.379T:DL00004842P../clsMainWnd.cpp[void clsXMLnode::update]
          "Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000006E000000000408T09:56:43.379T:D:"Node:label ID:lbl1 X:12 Y:261 W:100 H:30 Text:<a href=\"http://google.com\" style=\"color:#000000;text-decoration:none;\">Google</a>:"
          S000000000007E000000007037T09:56:50.008T:DL00000798P../clsMainWnd.cpp[clsXMLnode::clsXMLnode]
          "test99"
          S000000000008E000000007037T09:56:50.008T:DL00003985P../clsMainWnd.cpp[static clsXMLnode *clsXMLnode::spobjParse]
          "label"
          S000000000009E000000007104T09:56:50.075T:D:"label"
          S000000000010E000000007113T09:56:50.084T:D:"label"
          S000000000011E000000007128T09:56:50.099T:D:"label"
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8124
          Process:  Arg[2]: 24150
          Process:  Arg[3]: f1
          Process is NOT running, launching
          S000000000014E000000007171T09:56:50.142T:DL00000553P../clsModule.cpp[void clsModule::setProgram]
          Starting: f1:mdFIO
          Registering decoder for file simon.js, function: blnDecodeFIOcmd
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8125
          Process:  Arg[2]: 24150
          Process:  Arg[3]: s1
          Process is NOT running, launching
          S000000000018E000000007177T09:56:50.148T:D:Starting: s1:mdSQL
          Registering decoder for file simon.js, function: blnDecodeSQLcmd
          Process:  Arg[0]: 8123
          Process:  Arg[1]: 8126
          Process:  Arg[2]: 24150
          Process:  Arg[3]: x1
          Process is NOT running, launching
          S000000000022E000000007182T09:56:50.153T:D:Starting: x1:mdXML
          Registering decoder for file simon.js, function: blnDecodeXMLcmd
          S000000000024E000000007234T09:56:50.205T:DL00000571P../clsModule.cpp[auto clsModule::setProgram]
          PID for mdXML: 24171, On port: 8123
          Process:  mdXML started
          S000000000026E000000007234T09:56:50.205T:D:PID for mdFIO: 24165, On port: 8123
          Process:  mdFIO started
          S000000000028E000000007234T09:56:50.205T:D:PID for mdSQL: 24168, On port: 8123
          Process:  mdSQL started
          Client connecting...
          Client connecting...
          Client connecting...
          Client connected
          Client connected
          Client connected
          !s1!Client connecting...
          !s1!Client connected
          !f1!Client connecting...
          !f1!Client connected
          !x1!Client connecting...
          !x1!Client connected
          !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doComm
          !f1!S000000000042E000000000131T09:56:50.347DL00000731F../mdFIO/clsModFIO.cpp[void clsModFIO::doCommand]
          2022-08-17 08:56:50,  Command#1: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000043E000000000131T09:56:50.347D:Length
          !f1!S000000000043E000000000131T09:56:50.347D:Length: 1
          !f1!S000000000044E000000000131T09:56:50.347D:2022-08
          !f1!S000000000044E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#2: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000045E000000000131T09:56:50.347D:Length
          !f1!S000000000045E000000000131T09:56:50.347D:Length: 2
          !f1!S000000000046E000000000131T09:56:50.347D:2022-08
          !f1!S000000000046E000000000131T09:56:50.347D:2022-08-17 08:56:50,  Command#3: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000047E000000000131T09:56:50.347D:Length
          !f1!S000000000047E000000000131T09:56:50.347D:Length: 4
          !f1!S000000000048E000000000131T09:56:50.348D:2022-08
          !f1!S000000000048E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#4: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000049E000000000131T09:56:50.348D:Length
          !f1!S000000000049E000000000131T09:56:50.348D:Length: 8
          !f1!S000000000050E000000000131T09:56:50.348D:2022-08
          !f1!S000000000050E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#5: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000051E000000000131T09:56:50.348D:Length
          !f1!S000000000051E000000000131T09:56:50.348D:Length: 4
          !f1!S000000000052E000000000131T09:56:50.348D:2022-08
          !f1!S000000000052E000000000131T09:56:50.348D:2022-08-17 08:56:50,  Command#6: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000053E000000000131T09:56:50.348D:Length
          !f1!S000000000053E000000000131T09:56:50.348D:Length: 8
          !f1!S000000000054E000000000132T09:56:50.348D:2022-08
          !f1!S000000000054E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#7: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000055E000000000132T09:56:50.348D:Length
          !f1!S000000000055E000000000132T09:56:50.348D:Length: 27
          !f1!S000000000056E000000000132T09:56:50.348D:2022-08
          !f1!S000000000056E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#8: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000057E000000000132T09:56:50.348D:Length
          !f1!S000000000057E000000000132T09:56:50.348D:Length: 1
          !f1!S000000000058E000000000132T09:56:50.348D:2022-08
          !f1!S000000000058E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#9: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000059E000000000132T09:56:50.348D:Length
          !f1!S000000000059E000000000132T09:56:50.348D:Length: 2
          !f1!S000000000060E000000000132T09:56:50.348D:2022-08
          !f1!S000000000060E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#10: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000061E000000000132T09:56:50.348D:Length
          !f1!S000000000061E000000000132T09:56:50.348D:Length: 4
          !f1!S000000000062E000000000132T09:56:50.348D:2022-08
          !f1!S000000000062E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#11: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rb
          !f1!S000000000063E000000000132T09:56:50.348D:Length
          !f1!S000000000063E000000000132T09:56:50.348D:Length: 8
          !f1!S000000000064E000000000132T09:56:50.348D:2022-08
          !f1!S000000000064E000000000132T09:56:50.348D:2022-08-17 08:56:50,  Command#12: find, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
          !f1!S000000000065E000000000132T09:56:50.348D:Length
          !f1!S000000000065E000000000132T09:56:50.348D:Length: 18446744073709551615
          !f1!S000000000066E000000000132T09:56:50.349D:2022-08
          !f1!S000000000066E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#13: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000067E000000000132T09:56:50.349D:Length
          !f1!S000000000067E000000000132T09:56:50.349D:Length: 3
          !f1!S000000000068E000000000132T09:56:50.349D:2022-08
          !f1!S000000000068E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#14: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000069E000000000132T09:56:50.349D:Length
          !f1!S000000000069E000000000132T09:56:50.349D:Length: 4
          !f1!S000000000070E000000000132T09:56:50.349D:2022-08
          !f1!S000000000070E000000000132T09:56:50.349D:2022-08-17 08:56:50,  Command#15: read, File: /Users/sy/XMLMPAM/config/test.dat, Mode: rt
          !f1!S000000000071E000000000132T09:56:50.349D:Positio
          !f1!S000000000071E000000000132T09:56:50.349D:Position: -15
          !f1!S000000000072E000000000133T09:56:50.349D:Length
          !f1!S000000000072E000000000133T09:56:50.349D:Length: 5
          !f1!S000000000073E000000000133T09:56:50.349D:2022-08
          !f1!S000000000073E000000000133T09:56:50.349D:2022-08-17 08:56:50,  Command#16: tell, File: /Users/sy/XMLMPAM/config/test.dat, Mode: r
          !f1!S000000000074E000000000133T09:56:50.349D:Length
          !f1!S000000000074E000000000133T09:56:50.349D:Length: 18446744073709551615
          !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000008E000000000137T09:56:50.343DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"connect","params":{"database":"test","driver":"QMYSQL","host":"localhost","pass":"resuocra","usr":"root"}}
          !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000009E000000000179T09:56:50.384DL00000212F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"connect","output":"connected"}
          S000000000036E000000007753T09:56:50.724T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x600000012910), parent's thread is clsServer(0x600000257fc0), current thread is clsThread(0x600002c2a000)
          !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000010E000000000519T09:56:50.724DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm LIMIT ?;"}
          !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000011E000000000521T09:56:50.726DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected","records":[{"intEmployed":"1","intPri":"1","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Simon","vcSex":"Male","vcSurName":"Platten"},{"intEmployed":"1","intPri":"2","vcAddress":"Latona House\nStation Road\nCantley\nNorfolk\nNR13 3SQ","vcFirstName":"Susan","vcSex":"Female","vcSurName":"Platten"}]}
          !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000012E000000000781T09:56:50.987DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000013E000000000782T09:56:50.987DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000014E000000001044T09:56:51.249DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000015E000000001044T09:56:51.249DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000016E000000001304T09:56:51.510DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000017E000000001305T09:56:51.510DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000018E000000001562T09:56:51.767DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000019E000000001562T09:56:51.768DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000020E000000001812T09:56:52.017DL00000171F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"addrTo":"s1","args":[2],"command":"query","handler":"simon2.js@testFormHandler","msgType":"notify","source":"XMLMPAM","sql":"SELECT * FROM test.tblForm WHERE intPri NOT IN(1,2) LIMIT ?;"}
          !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoC
          !s1!S000000000021E000000001812T09:56:52.017DL00000276F../mdSQL/clsModSQL.cpp[bool clsModSQL::blnDoCmd]
          {"command":"query","handler":"simon2.js@testFormHandler","output":"connected"}
          S000000000037E000000009157T09:56:52.128T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x600000025290), parent's thread is clsServer(0x600000255400), current thread is clsThread(0x600002c2a000)
          S000000000038E000000009158T09:56:52.129T:W:QObject: Cannot create children for a parent that is in a different thread.
          (Parent is QNativeSocketEngine(0x6000000196e0), parent's thread is clsServer(0x600000256f60), current thread is clsThread(0x600002c2a000)
          

          Where:
          S is the sequence number
          E is the elapsed time
          T is the time stamp
          T:C Type:Critical warning
          T:D Type:Debug message
          T:F Type:Fatal error
          T:W Type:Warning
          L is the line number
          P is the path and file name

          This is what is shown in the Application Output which suggests the issue is generated during the initialisation of QApplication.

          
          10:04:03: Debugging /Users/sy/XMLMPAM/build-XMLMPAM-Desktop_Qt_5_15_2_clang_64bit-Debug/XMLMPAM.app/Contents/MacOS/XMLMPAM ~/XMLMPAM/config/xmlmpam ...
          
          got fallback qt version 0x50f02
          2022-08-17 10:04:08.921420+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
          2022-08-17 10:04:08.921503+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
          2022-08-17 10:04:09.414338+0100 XMLMPAM[24714:211122] SecTaskLoadEntitlements failed error=22 cs_flags=20, pid=24714
          2022-08-17 10:04:09.414418+0100 XMLMPAM[24714:211122] SecTaskCopyDebugDescription: XMLMPAM[24714]/0#-1 LF=0
          

          Found this:
          https://apple.stackexchange.com/questions/237465/what-means-sectaskloadentlitlements-failed-error-22

          D Offline
          D Offline
          DerReisende
          wrote on last edited by
          #24

          @SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
          With CMake it should be easier to add an entitlement to your qt app

          SPlattenS 1 Reply Last reply
          0
          • JoeCFDJ JoeCFD

            @DerReisende the log function in C++ 20 seems simpler. I use both spdlog and Qt logger.

            D Offline
            D Offline
            DerReisende
            wrote on last edited by
            #25

            @JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
            And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere.

            JoeCFDJ 1 Reply Last reply
            0
            • D DerReisende

              @JoeCFD Yes, your link looks simpler, I only wanted to highlight that you can get almost the same result if you want to stay with c++17.
              And I am sort of reluctant to use c++20 as I got shot several times in the foot trying to compile code on macOS Xcode clang which was written on windows with VC++ :( XCode‘s clang seems to be not the most modern clang available and does lack quite some features available elsewhere.

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

              @DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.

              D 1 Reply Last reply
              0
              • D DerReisende

                @SPlatten Then maybe this procedure might help you with qmake to get an entitlement running. Apart from networking I dont know what else you might need.
                With CMake it should be easier to add an entitlement to your qt app

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

                @DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?

                Kind Regards,
                Sy

                D 1 Reply Last reply
                0
                • SPlattenS SPlatten

                  @DerReisende , I'm really not sure what the messages SecTaskLoadEntitlements mean or what action I need to take?

                  D Offline
                  D Offline
                  DerReisende
                  wrote on last edited by
                  #28

                  @SPlatten The entitlement stuff should have no impact for local development but will be necessary for deployment to other machines later with the hardened runtime otherwise you might not get any network connectivity etc.
                  Do you still have those crashes from the beginning of the thread?

                  1 Reply Last reply
                  0
                  • JoeCFDJ JoeCFD

                    @DerReisende I am switching to Ubuntu 22 which has complete C++20 features and am looking forward to using more C++20 features in the hope of making code simpler and more organized. Linking more libs is often annoying. I prefer to use fewer third party libs. Version matching and compatibility are painful in deployment.

                    D Offline
                    D Offline
                    DerReisende
                    wrote on last edited by
                    #29

                    @JoeCFD If you gonna take a look here what c++20 features are supported by Apple's clang you are going to start crying and wishing you could have VC++ on macOS :D

                    J.HilkJ 1 Reply Last reply
                    0
                    • D DerReisende

                      @JoeCFD If you gonna take a look here what c++20 features are supported by Apple's clang you are going to start crying and wishing you could have VC++ on macOS :D

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

                      @DerReisende said in Qt 6.3.1 painful....:

                      wishing you could have VC++ on macOS :D

                      no-one wishes to use MSVC !🤪


                      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.

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

                        @DerReisende said in Qt 6.3.1 painful....:

                        wishing you could have VC++ on macOS :D

                        no-one wishes to use MSVC !🤪

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

                        @J-Hilk I liked it although I do not use it for now. I think it is a good one. You can see VS is the first one to have implemented full C++20 features.

                        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