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

ASSERT: engine->jsStackTop

    XMLWordPrintable

Details

    • iOS/tvOS/watchOS

    Description

      I have faced with a heisenbug(async nature?) which time-to-time leads to SIGABRTs because of ASSERTs during QQmlComponent::create(QQmlIncubator&, QtQml::qmlContext(..)):

      ASSERT: "!Chunk::testBit(c->extendsBitmap, h - c->realBase())" in file ../../include/QtQml/5.15.2/QtQml/private/../../../../../src/qml/memory/qv4heap_p.h, line 127

      Call stack:

      Exception Type:  EXC_CRASH (SIGABRT)
      ...
      Thread 15 Crashed:: TestThread_QML_53
      0  0x1084179a8 ???
      1  0x10d11b33c ???
      2  0x1160f5ee6 pthread_kill + 263
      3  0x1160b9684 abort + 123
      4  0x10292f328 qt_message_fatal(QtMsgType, QMessageLogContext const&, QString const&) + 24 (qlogging.cpp:1914)
      5  0x102cee1e1 QMessageLogger::fatal(char const*, ...) const + 433 (qlogging.cpp:893)
      6  0x102ced924 qt_assert(char const*, char const*, int) + 84 (qglobal.cpp:3358)
      7  0x1024a3638 QV4::Heap::Base::inUse() const + 120 (qv4heap_p.h:127)
      8  0x101cd5ead QV4::Heap::Pointer<QV4::Heap::InternalClass*, 0ul>::base() + 29 (qv4heap_p.h:199)
      9  0x101cd5e2c QV4::Heap::Pointer<QV4::Heap::InternalClass*, 0ul>::set(QV4::EngineBase*, QV4::Heap::InternalClass*) + 44 (qv4heap_p.h:79)
      10 0x1024b5e72 QV4::String::Data* QV4::MemoryManager::allocWithStringData<QV4::String, QString>(unsigned long, QString) + 98 (qv4mm_p.h:218)
      11 0x1024b273f QV4::ExecutionEngine::newString(QString const&) + 95 (qv4engine.cpp:894)
      12 0x1025b3eac QV4::ExecutableCompilationUnit::linkToEngine(QV4::ExecutionEngine*) + 268 (qv4executablecompilationunit.cpp:149)
      13 0x10273d003 QQmlObjectCreator::init(QQmlContextData*) + 179 (qqmlobjectcreator.cpp:116)
      14 0x10273cd2b QQmlObjectCreator::QQmlObjectCreator(QQmlContextData*, QQmlRefPointer<QV4::ExecutableCompilationUnit> const&, QQmlContextData*, QQmlIncubatorPrivate*) + 235 (qqmlobjectcreator.cpp:79)
      15 0x10273d355 QQmlObjectCreator::QQmlObjectCreator(QQmlContextData*, QQmlRefPointer<QV4::ExecutableCompilationUnit> const&, QQmlContextData*, QQmlIncubatorPrivate*) + 53 (qqmlobjectcreator.cpp:78)
      16 0x1026aa0ca QQmlComponent::create(QQmlIncubator&, QQmlContext*, QQmlContext*) + 618 (qqmlcomponent.cpp:1175)
      ...

      I am using "qt.qml.*=true" as a filter rule to get the most complete log but now have just some GC details...:

      [D] void QV4::MemoryManager::runGC()> ========== GC ========== (memory/qv4mm.cpp:1064)
      [D] void QV4::MemoryManager::runGC()>     Triggered by alloc request of 2 slots. (memory/qv4mm.cpp:1066)
      [D] void QV4::MemoryManager::runGC()>     Allocations since last GC 1588 (memory/qv4mm.cpp:1067)
      [D] void QV4::MemoryManager::runGC()> Allocated 258048 bytes in 2 chunks (memory/qv4mm.cpp:1071)
      [D] void QV4::MemoryManager::runGC()> Fragmented memory before GC 33376 (memory/qv4mm.cpp:1072)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for Block allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 0 (memory/qv4mm.cpp:1033)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for InternalClass allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 0 (memory/qv4mm.cpp:1033)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for Block allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 64 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 47 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 9 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 19 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 3 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 7 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 16 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 35328 (memory/qv4mm.cpp:1033)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for InternalClasss allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 9 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 23 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 115456 (memory/qv4mm.cpp:1033)
      [D] void QV4::MemoryManager::runGC()> Marked object in 338 us. (memory/qv4mm.cpp:1094)
      [D] void QV4::MemoryManager::runGC()>     9028 objects marked (memory/qv4mm.cpp:1095)
      [D] void QV4::MemoryManager::runGC()> Sweeped object in 309 us. (memory/qv4mm.cpp:1096)
      [D] void QV4::MemoryManager::runGC()> Used memory before GC: 224672 (memory/qv4mm.cpp:1111)
      [D] void QV4::MemoryManager::runGC()> Used memory after GC: 107264 (memory/qv4mm.cpp:1112)
      [D] void QV4::MemoryManager::runGC()> Freed up bytes      : 117408 (memory/qv4mm.cpp:1113)
      [D] void QV4::MemoryManager::runGC()> Freed up chunks     : 0 (memory/qv4mm.cpp:1114)
      [D] void QV4::MemoryManager::runGC()> ======== End GC ======== (memory/qv4mm.cpp:1129)
      [I] static void QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine *, QObject *, QQmlPropertyData *, const QV4::Value &)> Overwriting binding on QQmlConnections_QML_91::target at qrc:/file.qml:41 that was initially bound at qrc:/file.qml:50:3 (jsruntime/qv4qobjectwrapper.cpp:491)[D] void QV4::MemoryManager::runGC()> ========== GC ========== (memory/qv4mm.cpp:1064)
      [D] void QV4::MemoryManager::runGC()>     Triggered by alloc request of 1 slots. (memory/qv4mm.cpp:1066)
      [D] void QV4::MemoryManager::runGC()>     Allocations since last GC 6699 (memory/qv4mm.cpp:1067)
      [D] void QV4::MemoryManager::runGC()> Allocated 709632 bytes in 8 chunks (memory/qv4mm.cpp:1071)
      [D] void QV4::MemoryManager::runGC()> Fragmented memory before GC 64896 (memory/qv4mm.cpp:1072)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for Block allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 0 (memory/qv4mm.cpp:1033)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for InternalClass allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 0 (memory/qv4mm.cpp:1033)
      [D] void QV4::MemoryManager::runGC()> triggered by unmanaged heap: (memory/qv4mm.cpp:1087)
      [D] void QV4::MemoryManager::runGC()>    old unmanaged heap size: 131084 (memory/qv4mm.cpp:1088)
      [D] void QV4::MemoryManager::runGC()>    new unmanaged heap: 125894 (memory/qv4mm.cpp:1089)
      [D] void QV4::MemoryManager::runGC()>    unmanaged heap limit: 131072 (memory/qv4mm.cpp:1090)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for Block allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 26 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 46 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 15 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 19 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 19 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 17 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 103 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 147040 (memory/qv4mm.cpp:1033)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)> Slot map for InternalClasss allocator: (memory/qv4mm.cpp:1013)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 0 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 1 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 2 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 3 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 4 : 16 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 5 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 6 : 0 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>     number of entries in slot 7 : 36 (memory/qv4mm.cpp:1023)
      [D] size_t QV4::dumpBins(QV4::BlockAllocator *, const char *)>   total mem in bins 157824 (memory/qv4mm.cpp:1033)
      [D] void QV4::MemoryManager::runGC()> Marked object in 1246 us. (memory/qv4mm.cpp:1094)
      [D] void QV4::MemoryManager::runGC()>     9024 objects marked (memory/qv4mm.cpp:1095)
      [D] void QV4::MemoryManager::runGC()> Sweeped object in 973 us. (memory/qv4mm.cpp:1096)
      [D] void QV4::MemoryManager::runGC()> Used memory before GC: 644736 (memory/qv4mm.cpp:1111)
      [D] void QV4::MemoryManager::runGC()> Used memory after GC: 404768 (memory/qv4mm.cpp:1112)
      [D] void QV4::MemoryManager::runGC()> Freed up bytes      : 239968 (memory/qv4mm.cpp:1113)
      [D] void QV4::MemoryManager::runGC()> Freed up chunks     : 0 (memory/qv4mm.cpp:1114)
      [D] void QV4::MemoryManager::runGC()> ======== End GC ======== (memory/qv4mm.cpp:1129)
      [I] static void QV4::QObjectWrapper::setProperty(QV4::ExecutionEngine *, QObject *, QQmlPropertyData *, const QV4::Value &)> Overwriting binding on EmailAddress_QMLTYPE_108::specifications at qrc:/file.qml:45 that was initially bound at qrc:/file.qml:17:2 (jsruntime/qv4qobjectwrapper.cpp:491)

      ... which does not help a lot  

       

      Do we have any other related logging categories to keep digging?

      Attachments

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

        Activity

          People

            qtqmlteam Qt Qml Team User
            danilabagroff Daniil Megrabyan
            Votes:
            1 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes