Details
-
Bug
-
Resolution: Unresolved
-
P1: Critical
-
None
-
6.8
-
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]