[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#973659: Acknowledgement (qtdeclarative5-dev-tools: qmlcachegen segfaults on hppa)



The segfault is caused by stack overflow.  On hppa, the kernel config parameter CONFIG_MAX_STACK_SIZE_MB
sets the maximum stack size.  This is because the main stack is allocated at the top of memory and the stack grows
up.  256 MB is not enough.

dave@mx3210:~/debian/qtgraphicaleffects-opensource-src/qtgraphicaleffects-openso
urce-src-5.15.1/src/effects/private$ gdb -c core /usr/lib/qt5/bin/qmlcachegen
GNU gdb (Debian 9.2-1+b1) 9.2
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "hppa-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/lib/qt5/bin/qmlcachegen...
Reading symbols from /usr/lib/debug/.build-id/c5/9795c94efa883bf7fe6d0716815c3d08437aaf.debug...
[New LWP 17773]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/hppa-linux-gnu/libthread_db.so.1".
Core was generated by `/usr/lib/qt5/bin/qmlcachegen -o ../../../qml/QtGraphicalEffects/private/DropSha'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x000ad7e8 in QMapData<QString, QV4::Compiler::Context::Member>::findNode (
    akey=..., this=<optimized out>, this=<optimized out>)
    at /usr/include/hppa-linux-gnu/qt5/QtCore/qmap.h:281
281     QMapNode<Key, T> *QMapData<Key, T>::findNode(const Key &akey) const
(gdb) disass $pc-16,$pc+16
Dump of assembler code from 0xad7d8 to 0xad7f8:
   0x000ad7d8 <QVector<QV4::Moth::BytecodeGenerator::I>::append(QV4::Moth::BytecodeGenerator::I const&)+316>:   stw,ma r21,4(r20)
   0x000ad7dc <QVector<QV4::Moth::BytecodeGenerator::I>::append(QV4::Moth::BytecodeGenerator::I const&)+320>:   b,l 0xad754
<QVector<QV4::Moth::BytecodeGenerator::I>::append(QV4::Moth::BytecodeGenerator::I const&)+184>,r0
   0x000ad7e0 <QVector<QV4::Moth::BytecodeGenerator::I>::append(QV4::Moth::BytecodeGenerator::I const&)+324>:   ldw 0(r3),r20
   0x000ad7e4 <QMapData<QString, QV4::Compiler::Context::Member>::findNode(QString const&) const+0>:    stw rp,-14(sp)
=> 0x000ad7e8 <QMapData<QString, QV4::Compiler::Context::Member>::findNode(QString const&) const+4>:    stw,ma r6,40(sp)
   0x000ad7ec <QMapData<QString, QV4::Compiler::Context::Member>::findNode(QString const&) const+8>:    ldi 0,r6
   0x000ad7f0 <QMapData<QString, QV4::Compiler::Context::Member>::findNode(QString const&) const+12>:   stw r5,-3c(sp)
   0x000ad7f4 <QMapData<QString, QV4::Compiler::Context::Member>::findNode(QString const&) const+16>:   copy r25,r5
End of assembler dump.
(gdb) bt
#0  0x000ad7e8 in QMapData<QString, QV4::Compiler::Context::Member>::findNode (
    akey=..., this=<optimized out>, this=<optimized out>)
    at /usr/include/hppa-linux-gnu/qt5/QtCore/qmap.h:281
#1  0x000ad970 in QMap<QString, QV4::Compiler::Context::Member>::constFind (
    akey=..., this=<optimized out>)
    at /usr/include/hppa-linux-gnu/qt5/QtCore/qmap.h:853
#2  QMap<QString, QV4::Compiler::Context::Member>::find (akey=...,
    this=<optimized out>) at /usr/include/hppa-linux-gnu/qt5/QtCore/qmap.h:855
#3  QV4::Compiler::Context::findMember (name=..., this=<optimized out>)
    at ../qml/compiler/qv4compilercontext_p.h:304
#4  QV4::Compiler::Context::resolveName (this=0xebea8, name=...,
    accessLocation=...) at ../qml/compiler/qv4compilercontext.cpp:137
#5  0x000374e4 in QV4::Compiler::Codegen::referenceForName (this=0xee3674b8,
    name=..., isLhs=168, accessLocation=...)
    at ../qml/compiler/qv4codegen.cpp:2374
#6  0x00038320 in QV4::Compiler::Codegen::Reference::storeAccumulator (
    this=0xee367494)
    at ../../include/QtQml/5.15.1/QtQml/private/../../../../../src/qml/common/qqmljssourcelocation_p.h:63
#7  0x000384c8 in QV4::Compiler::Codegen::Reference::storeConsumeAccumulator (
    this=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4130
#8  0x00038640 in QV4::Compiler::Codegen::Reference::doStoreOnStack (this=0x0,
    slotIndex=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4186
--Type <RET> for more, q to quit, c to continue without paging--
#9  0x00038348 in QV4::Compiler::Codegen::Reference::storeOnStack (this=0x0)
    at ../qml/compiler/qv4codegen.cpp:4231
#10 QV4::Compiler::Codegen::Reference::storeAccumulator (this=0xee367494)
    at ../qml/compiler/qv4codegen.cpp:4231
#11 0x000384c8 in QV4::Compiler::Codegen::Reference::storeConsumeAccumulator (
    this=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4130
#12 0x00038640 in QV4::Compiler::Codegen::Reference::doStoreOnStack (this=0x0,
    slotIndex=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4186
#13 0x00038348 in QV4::Compiler::Codegen::Reference::storeOnStack (this=0x0)
    at ../qml/compiler/qv4codegen.cpp:4231
#14 QV4::Compiler::Codegen::Reference::storeAccumulator (this=0xee367494)
    at ../qml/compiler/qv4codegen.cpp:4231
#15 0x000384c8 in QV4::Compiler::Codegen::Reference::storeConsumeAccumulator (
    this=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4130
#16 0x00038640 in QV4::Compiler::Codegen::Reference::doStoreOnStack (this=0x0,
    slotIndex=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4186
#17 0x00038348 in QV4::Compiler::Codegen::Reference::storeOnStack (this=0x0)
    at ../qml/compiler/qv4codegen.cpp:4231
#18 QV4::Compiler::Codegen::Reference::storeAccumulator (this=0xee367494)
    at ../qml/compiler/qv4codegen.cpp:4231
#19 0x000384c8 in QV4::Compiler::Codegen::Reference::storeConsumeAccumulator (
    this=<optimized out>) at ../qml/compiler/qv4codegen.cpp:4130
#20 0x00038640 in QV4::Compiler::Codegen::Reference::doStoreOnStack (this=0x0,
--Type <RET> for more, q to quit, c to continue without paging--q
Quit

How much stack does qmlcachegen typically need?

Another possibility is doStoreOnStack doesn't work on hppa.

Regards,
Dave Anglin

-- 

John David Anglin  dave.anglin@bell.net


Reply to: