Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-122928

Qt5Compat: Unaligned access UB in tst_QtJson::invalidBinaryData()

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • P1: Critical
    • None
    • 6.8
    • Qt5 Compat
    • None

    Description

      Hi, this is copied from the GH issue I opened:  https://github.com/qt/qt5compat/issues/3

      I've discovered running the test suite on a platform which does not support unaligned access, that under tst_qt5compat_json, the test tst_QtJson::invalidBinaryData() invokes a lot of UB by issuing unaligned accesses. This is the only test which has this problem - the rest of the test suite is perfectly fine.

      Below is a sample output from UBSAN, compiled with -fsanitize=alignment. This also includes qtcore-6.8.0 built with the same flags, since some of the accesses technically occur there.

      Although this was discovered by running on a platform on which unaligned accesses are illegal, unaligned access is always undefined behavior on all platforms and will always be caught by UBSAN.  That's why I have not made this ticket platform-specific.

      7/12 Testing: tst_qt5compat_json
      7/12 Test: tst_qt5compat_json
      Command: "/usr/bin/cmake" "-P" "/var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999_build/tests/auto/core5/serialization/json/tst_qt5compat_jsonWrapperRelWithDebInfo.cmake"
      Directory: /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999_build/tests/auto/core5/serialization/json
      "tst_qt5compat_json" start time: Feb 29 22:26 UTC
      Output:
      ----------------------------------------------------------
      ********* Start testing of tst_QtJson *********
      Config: Using QtTest library 6.8.0, Qt 6.8.0 (power64-little_endian-lp64 shared (dynamic) release build; by GCC 13.2.1 20240113), gentoo 2.14
      PASS   : tst_QtJson::initTestCase()
      PASS   : tst_QtJson::fromBinary()
      PASS   : tst_QtJson::toAndFromBinary(test.json)
      PASS   : tst_QtJson::toAndFromBinary(test2.json)
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:368:38: runtime error: member call on misaligned address 0x000150be9c53 for type 'const struct offset', which requires 4 byte alignment
      0x000150be9c53: note: pointer points here
       00  00 00 04 22 00 00 00 00  00 00 00 24 00 00 00 1c  00 6a 73 01 00 00 00 04  02 00 00 23 00 00 00
                    ^ 
      /usr/include/qt6/QtCore/qendian.h:258:48: runtime error: member access within misaligned address 0x000150be9c53 for type 'const struct QSpecialInteger', which requires 4 byte alignment
      0x000150be9c53: note: pointer points here
       00  00 00 04 22 00 00 00 00  00 00 00 24 00 00 00 1c  00 6a 73 01 00 00 00 04  02 00 00 23 00 00 00
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:320:96: runtime error: member call on misaligned address 0x000150be9c53 for type 'const struct offset', which requires 4 byte alignment
      0x000150be9c53: note: pointer points here
       00  00 00 04 22 00 00 00 00  00 00 00 24 00 00 00 1c  00 6a 73 01 00 00 00 04  02 00 00 23 00 00 00
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:371:24: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:371:48: runtime error: member call on misaligned address 0x000150be9c53 for type 'const struct offset', which requires 4 byte alignment
      0x000150be9c53: note: pointer points here
       00  00 00 04 22 00 00 00 00  00 00 00 24 00 00 00 1c  00 6a 73 01 00 00 00 04  02 00 00 23 00 00 00
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:483:32: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:483:32: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:483:16: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:426:66: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:426:66: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct qle_bitfield', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:426:38: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /usr/include/qt6/QtCore/6.8.0/QtCore/private/qendian_p.h:173:42: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct QSpecialIntegerBitfieldUnion', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /usr/include/qt6/QtCore/6.8.0/QtCore/private/qendian_p.h:60:41: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Storage', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:484:35: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:473:32: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:473:32: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:473:16: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:474:35: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:376:30: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:376:30: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:376:17: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:463:17: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:432:56: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:432:56: runtime error: member call on misaligned address 0x000150be9aea for type 'const struct qle_bitfield', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:432:32: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Value', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /usr/include/qt6/QtCore/6.8.0/QtCore/private/qendian_p.h:173:42: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct QSpecialIntegerBitfieldUnion', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /usr/include/qt6/QtCore/6.8.0/QtCore/private/qendian_p.h:60:41: runtime error: member access within misaligned address 0x000150be9aea for type 'const struct Storage', which requires 4 byte alignment
      0x000150be9aea: note: pointer points here
       00 00  04 00 70 61 56 00 04 00  00 00 8b 00 74 10 65 61  10 00 65 78 61 6d 70 fa  6f 73 73 61 72 79
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:485:29: runtime error: member call on misaligned address 0x000150be9b06 for type 'const struct Entry', which requires 4 byte alignment
      0x000150be9b06: note: pointer points here
       73 61 72 79 00 00  80 ff ff ff ff 7f 10 00  72 61 00 00 48 00 41 69  76 00 fa 1e 00 00 6c 75  73 73
                   ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:179:20: runtime error: member access within misaligned address 0x000150be9b0a for type 'const struct Data', which requires 4 byte alignment
      0x000150be9b0a: note: pointer points here
       00 00  80 ff ff ff ff 7f 10 00  72 61 00 00 48 00 41 69  76 00 fa 1e 00 00 6c 75  73 73 54 65 55 6d
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:179:20: runtime error: member call on misaligned address 0x000150be9b0a for type 'const struct qle_uint', which requires 4 byte alignment
      0x000150be9b0a: note: pointer points here
       00 00  80 ff ff ff ff 7f 10 00  72 61 00 00 48 00 41 69  76 00 fa 1e 00 00 6c 75  73 73 54 65 55 6d
                    ^ 
      /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson_p.h:179:28: runtime error: member access within misaligned address 0x000150be9b0a for type 'const struct Data', which requires 4 byte alignment
      0x000150be9b0a: note: pointer points here
       00 00  80 ff ff ff ff 7f 10 00  72 61 00 00 48 00 41 69  76 00 fa 1e 00 00 6c 75  73 73 54 65 55 6d
                    ^ 
      PASS   : tst_QtJson::invalidBinaryData()
      PASS   : tst_QtJson::compactArray()
      PASS   : tst_QtJson::compactObject()
      PASS   : tst_QtJson::validation()
      PASS   : tst_QtJson::testCompactionError()
      PASS   : tst_QtJson::cleanupTestCase()
      Totals: 10 passed, 0 failed, 0 skipped, 0 blacklisted, 15849ms
      ********* Finished testing of tst_QtJson *********
      <end of output>
      Test time =  15.87 sec
      ----------------------------------------------------------
      Test Passed.
      "tst_qt5compat_json" end time: Feb 29 22:26 UTC
      "tst_qt5compat_json" time elapsed: 00:00:15
      ---------------------------------------------------------- 

      Here's a backtrace from the crashing platform.

      +r
      Starting program: /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999_build/tests/auto/core5/serialization/json/tst_qt5compat_json 
      [Thread debugging using libthread_db enabled]
      Using host libthread_db library "/lib64/libthread_db.so.1".Program received signal SIGBUS, Bus error.
      0xfff80001003582cc in QSpecialInteger<QLittleEndianStorageType<unsigned int> >::operator unsigned int (this=0x10000262373) at /usr/include/qt6/QtCore/qendian.h:258
      258        operator T() const { return S::fromSpecial(val); }
      +p val
      $1 = 570425344
      +ptype val
      type = unsigned int
      +p &val
      $2 = (QSpecialInteger<QLittleEndianStorageType<unsigned int> >::T *) 0x10000262373
      +bt full
      #0  0xfff80001003582cc in QSpecialInteger<QLittleEndianStorageType<unsigned int> >::operator unsigned int (this=0x10000262373) at /usr/include/qt6/QtCore/qendian.h:258
      No locals.
      #1  0xfff8000100355278 in QBinaryJsonPrivate::Object::isValid (this=0x100002621e8, maxSize=536) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:368
              e = 0x83287020
              key = {d = {d = 0x7feffffd988, ptr = 0x1000030aa80 u"", size = 1}, static _empty = 0 u'\000'}
              i = 0
              lastKey = {d = {d = 0x0, ptr = 0x0, size = 0}, static _empty = 0 u'\000'}
      #2  0xfff8000100354944 in QBinaryJsonPrivate::ConstData::isValid (this=0x1000030aa80) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:288
              root = 0x100002621e8
              maxSize = 536
      #3  0xfff8000100353d14 in QBinaryJson::fromRawData (data=0x100002621e0 "qbjs\001", size=544, validation=QBinaryJson::Validate) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/src/core5/serialization/qbinaryjson.cpp:79
              binaryData = std::unique_ptr<QBinaryJsonPrivate::ConstData> = {get() = 0x1000030aa80}
      #4  0x0000010000004670 in tst_QtJson::invalidBinaryData (this=0x7feffffebb0) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/tests/auto/core5/serialization/json/tst_qtjson.cpp:108
              file = {<QFileDevice> = {<QIODevice> = {<QObject> = {_vptr.QObject = 0xfff80001015f6378 <vtable for QFile+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0xfff8000101212850 <(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS>, data = 0xfff80001012128cc <qt_meta_data_CLASSQObjectENDCLASS>, static_metacall = 0xfff8000100cdee5c <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f9a40 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x1000021b960}}, <QIODeviceBase> = {<No data fields>}, static staticMetaObject = {d = {superdata = {direct = 0xfff80001015f4328 <QObject::staticMetaObject>}, stringdata = 0xfff800010120a1d8 <(anonymous namespace)::qt_meta_stringdata_CLASSQIODeviceENDCLASS>, data = 0xfff800010120a2a0 <qt_meta_data_CLASSQIODeviceENDCLASS>, static_metacall = 0xfff8000100ba13c4 <QIODevice::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f6a08 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQIODeviceENDCLASS_t, QtPrivate::TypeAndForceComplete<QIODevice, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<long long, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<long long, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0xfff80001015f69d0 <QIODevice::staticMetaObject>}, stringdata = 0xfff8000101209a58 <(anonymous namespace)::qt_meta_stringdata_CLASSQFileDeviceENDCLASS>, data = 0xfff8000101209a6c <qt_meta_data_CLASSQFileDeviceENDCLASS>, static_metacall = 0xfff8000100b7f7f8 <QFileDevice::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f30b8 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQFileDeviceENDCLASS_t, QtPrivate::TypeAndForceComplete<QFileDevice, std::integral_constant<bool, true> > >>, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = {direct = 0xfff80001015f6500 <QFileDevice::staticMetaObject>}, stringdata = 0xfff8000101209898 <(anonymous namespace)::qt_meta_stringdata_CLASSQFileENDCLASS>, data = 0xfff80001012098a8 <qt_meta_data_CLASSQFileENDCLASS>, static_metacall = 0xfff8000100b7c184 <QFile::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f30b0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQFileENDCLASS_t, QtPrivate::TypeAndForceComplete<QFile, std::integral_constant<bool, true> > >>, extradata = 0x0}}}
              bytes = {d = {d = 0x100002621d0, ptr = 0x100002621e0 "qbjs\001", size = 544}, static _empty = 0 '\000'}
              document = {static BinaryFormatTag = 1936351857, d = std::unique_ptr<QJsonDocumentPrivate> = {get() = 0x1000022a090}}
              i = 2
              dir = {d_ptr = {d = 0x10000246e70}}
              files = {<QListSpecialMethods<QFileInfo>> = {<QListSpecialMethodsBase<QFileInfo>> = {<No data fields>}, <No data fields>}, d = {d = 0x1000023c520, ptr = 0x1000023c530, size = 34}}
      #5  0x00000100000079ec in tst_QtJson::qt_static_metacall (_o=0x7feffffebb0, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0x7feffffdf80) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999_build/tests/auto/core5/serialization/json/tst_qt5compat_json_autogen/include/tst_qtjson.moc:133
              _t = 0x7feffffebb0
      #6  0xfff8000100c43ad0 in QMetaMethodInvoker::invokeImpl (self=..., target=0x7feffffebb0, connectionType=Qt::DirectConnection, paramCount=1, parameters=0x7feffffdf80, typeNames=0x7feffffdf88, metaTypes=0x7feffffdf90) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/corelib/kernel/qmetaobject.cpp:2754
              object = 0x7feffffebb0
              priv = 0x7feffffdde0
              MetaTypesAreOptional = true
              methodMetaTypes = 0x100001ffcb0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASStst_QtJsonENDCLASS_t, QtPrivate::TypeAndForceComplete<tst_QtJson, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >+48>
              param = 0x7feffffdf80
              checkTypesAreCompatible = {__priv = 0x7feffffdde0, __typeNames = 0x7feffffdf88, __metaTypes = 0x7feffffdf90, __methodMetaTypes = 0x100001ffcb0 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASStst_QtJsonENDCLASS_t, QtPrivate::TypeAndForceComplete<tst_QtJson, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >+48>}
              currentThreadId = 0x0
              objectThread = 0x0
              receiverInSameThread = {__currentThreadId = @0x7feffffdc98, __objectThread = @0x7feffffdca0, __object = @0x7feffffdc90}
              idx_relative = 4
              idx_offset = 4
              callFunction = 0x100000078f8 <tst_QtJson::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>
      #7  0xfff8000100c42c60 in QMetaMethod::invokeImpl (self=..., target=0x7feffffebb0, connectionType=Qt::DirectConnection, paramCount=1, parameters=0x7feffffdf80, typeNames=0x7feffffdf88, metaTypes=0x7feffffdf90) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/corelib/kernel/qmetaobject.cpp:2593
              r = -524287
      #8  0xfff800010075dc28 in QMetaMethod::invoke<void> (this=0x7feffffe1e0, obj=0x7feffffebb0, c=Qt::DirectConnection, r=...) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/corelib/kernel/qmetaobject.h:148
              h = {parameters = {_M_elems = {0x0}}, typeNames = {_M_elems = {0x0}}, metaTypes = {_M_elems = {0x0}}}
      #9  0xfff800010075a5b0 in QMetaMethod::invoke<>(QObject*, Qt::ConnectionType) const (this=0x7feffffe1e0, obj=0x7feffffebb0, c=Qt::DirectConnection) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/corelib/kernel/qmetaobject.h:160
      No locals.
      #10 0xfff80001007437f0 in QTest::invokeTestMethodIfValid (m=..., obj=0x7feffffebb0) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:736
              ok = true
      #11 0xfff800010074743c in QTest::TestMethods::invokeTestOnData (this=0x7feffffe9a0, index=2) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:1374
              initQuit = false
              invokeOk = false
              isBenchmark = false
              i = -1
              resultsList = {<QListSpecialMethods<QList<QBenchmarkResult> >> = {<QListSpecialMethodsBase<QList<QBenchmarkResult> >> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}}
              minimumTotalReached = false
      #12 0xfff800010074880c in QTest::TestMethods::invokeTest (this=0x7feffffe9a0, index=2, tag=..., watchDog=std::optional [no contained value]) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:1676
              s = {<No data fields>}
              curDataIndex = 0
              dataCount = 0
              dataTag = {__table = @0x7feffffe3c0, __dataCount = 0}
              benchmarkData = {static current = 0x7feffffe438, results = {<QListSpecialMethods<QBenchmarkResult>> = {<QListSpecialMethodsBase<QBenchmarkResult>> = {<No data fields>}, <No data fields>}, d = {d = 0x0, ptr = 0x0, size = 0}}, valid = false, resultAccepted = false, runOnce = false, iterationCount = 1}
              name = @0x7feffffe408: {d = {d = 0x0, ptr = 0x1000000c971 <(anonymous namespace)::qt_meta_stringdata_CLASStst_QtJsonENDCLASS+161> "invalidBinaryData", size = 17}, static _empty = 0 '\000'}
              member = "invalidBinaryData_data()\000\370\000\001\000\002\345\320\377\370\000\001\000\002\345\320\000\000\a\376\377\377\344\360\377\370\000\001\000\220X\300\377\370\000\001\000\003\253\270\377\370\000\001\000\220\000\000\000\000\a\376\377\377\345\300\377\370\000\001\000v\237\210\000\000\a\376\377\377\345\030\377\370\000\001\000\220X\270\000\000\001\000\000!\323\b\000-\337\017\2515]r", '\000' <repeats 32 times>, "\377\370\000\001\000 \000\000\000-\337\017\2515]r\377\370\000\001\000\002\345\320\377\370\000\001\000\220\000\000\377\370\000\001\000w\026\210\000\000\000\000\000\000\001y"...
              table = {d = 0x100002281f0}
              gTable = 0x1000021d760
              globalDataCount = 0
              curGlobalDataIndex = 0
              globalDataTag = {__gTable = 0x1000021d760, __globalDataCount = 0}
              dataTagMatches = {<No data fields>}
              foundFunction = true
              blacklisted = false
      #13 0xfff800010074a220 in QTest::TestMethods::invokeTests (this=0x7feffffe9a0, testObject=0x7feffffebb0) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:2013
              data = 0x0
              ok = true
              i = 2
              count = 7
              previousFailed = false
              wasSkipped = 176
              metaObject = 0x100001ffcd0 <tst_QtJson::staticMetaObject>
              watchDog = std::optional [no contained value]
      #14 0xfff800010074bcb0 in QTest::qRun () at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:2654
              handler = std::optional = {[contained value] = {static fatalSignals = {_M_elems = {1, 2, 3, 6, 4, 10, 8, 11, 13, 15}}, static crashingSignals = <same as static member of an already seen type>, alternateStackBase = 0xfff8000100042000, static pauseOnCrash = false}}
              seenBad = false
              commandLineMethods = std::vector of length 0, capacity 0
              test = {m_initTestCaseMethod = {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000c9f8 <qt_meta_data_CLASStst_QtJsonENDCLASS+56>}}, m_initTestCaseDataMethod = {mobj = 0x0, data = {d = 0x0}}, m_cleanupTestCaseMethod = {mobj = 0x0, data = {d = 0x0}}, m_initMethod = {mobj = 0x0, data = {d = 0x0}}, m_cleanupMethod = {mobj = 0x0, data = {d = 0x0}}, m_methods = std::vector of length 7, capacity 13 = {{mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000ca10 <qt_meta_data_CLASStst_QtJsonENDCLASS+80>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000ca40 <qt_meta_data_CLASStst_QtJsonENDCLASS+128>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000ca58 <qt_meta_data_CLASStst_QtJsonENDCLASS+152>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000ca70 <qt_meta_data_CLASStst_QtJsonENDCLASS+176>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000ca88 <qt_meta_data_CLASStst_QtJsonENDCLASS+200>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000caa0 <qt_meta_data_CLASStst_QtJsonENDCLASS+224>}}, {mobj = 0x100001ffcd0 <tst_QtJson::staticMetaObject>, data = {d = 0x1000000cab8 <qt_meta_data_CLASStst_QtJsonENDCLASS+248>}}}}
              callgrindChildExitCode = 0
      #15 0xfff800010074b1f8 in QTest::qExec (testObject=0x7feffffebb0, argc=1, argv=0x7fefffff048) at /usr/src/debug/dev-qt/qtbase-6.9999/qtbase-6.9999/src/testlib/qtestcase.cpp:2532
              ret = -1456120462
      #16 0x0000010000007834 in main (argc=1, argv=0x7fefffff048) at /var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/tests/auto/core5/serialization/json/tst_qtjson.cpp:266
              app = {<QObject> = {_vptr.QObject = 0xfff80001015f7c70 <vtable for QCoreApplication+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0xfff8000101212850 <(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS>, data = 0xfff80001012128cc <qt_meta_data_CLASSQObjectENDCLASS>, static_metacall = 0xfff8000100cdee5c <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f9a40 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x10000218460}}, static staticMetaObject = {d = {superdata = {direct = 0xfff80001015f4328 <QObject::staticMetaObject>}, stringdata = 0xfff800010120daa8 <(anonymous namespace)::qt_meta_stringdata_CLASSQCoreApplicationENDCLASS>, data = 0xfff800010120dc0c <qt_meta_data_CLASSQCoreApplicationENDCLASS>, static_metacall = 0xfff8000100c1ec2c <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f7be8 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQCoreApplicationENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<bool, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QCoreApplication, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<int, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}, static self = 0x7feffffeba0}
              tc = {<QObject> = {_vptr.QObject = 0x100001ffd18 <vtable for tst_QtJson+16>, static staticMetaObject = {d = {superdata = {direct = 0x0}, stringdata = 0xfff8000101212850 <(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS>, data = 0xfff80001012128cc <qt_meta_data_CLASSQObjectENDCLASS>, static_metacall = 0xfff8000100cdee5c <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0xfff80001015f9a40 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASSQObjectENDCLASS_t, QtPrivate::TypeAndForceComplete<QString, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<QObject, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QString const&, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<QObject*, std::integral_constant<bool, false> > >>, extradata = 0x0}}, d_ptr = {d = 0x1000021bc00}}, static staticMetaObject = {d = {superdata = {direct = 0xfff80001015f4328 <QObject::staticMetaObject>}, stringdata = 0x1000000c8d0 <(anonymous namespace)::qt_meta_stringdata_CLASStst_QtJsonENDCLASS>, data = 0x1000000c9c0 <qt_meta_data_CLASStst_QtJsonENDCLASS>, static_metacall = 0x100000078f8 <tst_QtJson::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, metaTypes = 0x100001ffc80 <qt_incomplete_metaTypeArray<(anonymous namespace)::qt_meta_stringdata_CLASStst_QtJsonENDCLASS_t, QtPrivate::TypeAndForceComplete<tst_QtJson, std::integral_constant<bool, true> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> >, QtPrivate::TypeAndForceComplete<void, std::integral_constant<bool, false> > >>, extradata = 0x0}}, testDataDir = {d = {d = 0x1000021e360, ptr = 0x1000021e370 u"/var/tmp/portage/dev-qt/qt5compat-6.9999/work/qt5compat-6.9999/tests/auto/core5/serialization/json", size = 98}, static _empty = 0 u'\000'}}quit
      +quit
      EOF [assumed Y] 

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            sonakur Sona Kurazyan
            matoro Matoro -
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes