Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unaligned access UB in tst_QtJson::invalidBinaryData() #3

Open
matoro opened this issue Mar 1, 2024 · 0 comments
Open

Unaligned access UB in tst_QtJson::invalidBinaryData() #3

matoro opened this issue Mar 1, 2024 · 0 comments

Comments

@matoro
Copy link

matoro commented Mar 1, 2024

Hi, 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.

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]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

1 participant