Details
-
Bug
-
Resolution: Duplicate
-
P1: Critical
-
6.9.0
-
None
Description
qmlcachegen crashes here during compiling dde-shell after updating Qt to 6.9.0. The same command and file doesn't trigger the crash on Qt 6.8.2.
The qml file is: https://github.com/linuxdeepin/dde-shell/blob/1.0.10/panels/dock/OverflowContainer.qml
Command to reproduce: /usr/lib/qt6/qmlcachegen --bare --resource-path /org/deepin/ds/dock/OverflowContainer.qml -I /usr/lib/qt6/qml -o /tmp/out.cpp OverflowContainer.qml
System: Arch Linux x86_64
gdb:
Program terminated with signal SIGSEGV, Segmentation fault.
#0 QQmlJSCodeGenerator::convertStored (this=this@entry=0x7fff28f50500, from=..., to=..., variable=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljsscope_p.h:433
{{433 AccessSemantics accessSemantics() const
}}
(gdb) bt
#0 QQmlJSCodeGenerator::convertStored (this=this@entry=0x7fff28f50500, from=..., to=..., variable=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljsscope_p.h:433
#1 0x00007c4e0098d0e5 in QQmlJSCodeGenerator::conversion (this=0x7fff28f50500, from=..., to=..., variable=...) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscodegenerator.cpp:4016
#2 0x00007c4e009722d1 in QQmlJSCodeGenerator::generate_IteratorNext (this=0x7fff28f50500, value=<optimized out>, offset=34) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscodegenerator.cpp:2676
#3 0x00007c4e002f4059 in QV4::Moth::ByteCodeHandler::decode (this=this@entry=0x7fff28f50500, code=0x5a9e1947abdc "\001\002\n\001\026\t\030\n\026\a\302&\030\r\026", <incomplete sequence \302>, len=<optimized out>)
at /usr/src/debug/qt6-declarative/qtdeclarative/src/qml/compiler/qv4bytecodehandler.cpp:41
#4 0x00007c4e0095250a in QQmlJSCodeGenerator::run (this=<optimized out>, function=0x7fff28f50b80, basicBlocksValidationFailed=false) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscodegenerator.cpp:185
#5 0x00007c4e009acbe2 in QQmlJSAotCompiler::doCompile (this=0x7fff28f51a00, context=<optimized out>, function=function@entry=0x7fff28f50b80, errors=<optimized out>, errors@entry=0x7fff28f50a90)
at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:812
#6 0x00007c4e009acd95 in QQmlJSAotCompiler::doCompileAndRecordAotStats (this=<optimized out>, context=<optimized out>, function=0x7fff28f50b80, errors=0x7fff28f50a90, name=..., location=...)
at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:823
#7 0x00007c4e0099eb74 in QQmlJSAotCompiler::compileBinding (this=0x7fff28f51a00, context=0x5a9e19495720, irBinding=<optimized out>, astNode=0x5a9e18ffd208) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:695
#8 0x00007c4e0099d618 in operator() (__closure=<synthetic pointer>, bindingOrFunction=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:331
#9 std::for_each<{}gnu_cxx::{}normal_iterator<BindingOrFunction*, std::vector<BindingOrFunction> >, qCompileQmlFile(QmlIR::Document&, const QString&, QQmlJSSaveFunction, QQmlJSAotCompiler*, QQmlJSCompileError*, bool, QV4::Compiler::CodegenWarningInterface*, const QString*)::<lambda(const BindingOrFunction&)> > ({_}_first=Python Exception <class 'gdb.error'>: value has been optimized out
, __last=..., __f=...) at /usr/include/c++/14.2.1/bits/stl_algo.h:3786
#10 qCompileQmlFile (irDocument=..., inputFileName=..., saveFunction=..., aotCompiler=aotCompiler@entry=0x7fff28f51a00, error=error@entry=0x7fff28f51780, storeSourceLocation=<optimized out>, interface=<optimized out>, fileContents=<optimized out>)
at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:273
#11 0x00007c4e0099e95e in qCompileQmlFile
(inputFileName=..., saveFunction=..., aotCompiler=aotCompiler@entry=0x7fff28f51a00, error=error@entry=0x7fff28f51780, storeSourceLocation=storeSourceLocation@entry=true, interface=0x5a9deaf4a010 <QV4::Compiler::defaultCodegenWarningInterface()::iface>, fileContents=0x0) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscompiler.cpp:189
#12 0x00005a9deaf40a6e in main (argc=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-declarative/qtdeclarative/tools/qmlcachegen/qmlcachegen.cpp:305
(gdb) f 2
Downloading 169.97 K source file /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscodegenerator.cpp
#2 0x00007c4e009722d1 in QQmlJSCodeGenerator::generate_IteratorNext (this=0x7fff28f50500, value=<optimized out>, offset=34) at /usr/src/debug/qt6-declarative/qtdeclarative/src/qmlcompiler/qqmljscodegenerator.cpp:2676
2676 + conversion(
(gdb) p iteratorValue
$1 = {d = 0x5a9e19d952a0}
(gdb) p m_state.changedRegister()
Cannot evaluate function – may be inlined
(gdb) p m_state
$2 = {<QQmlJSCompilePass::State> = {registers = {<QFlatMapValueCompare<int, QQmlJSCompilePass::VirtualRegister, std::less<int> >> = {<std::less<int>> = {<std::binary_function<int, int, bool>> ={{{}
{{{} keys = {<QListSpecialMethods<int>> = {<QListSpecialMethodsBase<int>> = {<No data fields>}
{}}}, <No data fields>}, d = {d = 0x5a9e197a5560, ptr = 0x5a9e197a5574, size = 10,{}}}
values = {<QListSpecialMethods<QQmlJSCompilePass::VirtualRegister>> = {<QListSpecialMethodsBase<QQmlJSCompilePass::VirtualRegister>> ={{{}
{{{} lookups = {<QFlatMapValueCompare<int, QQmlJSCompilePass::VirtualRegister, std::less<int> >> = {<std::less<int>> = {<std::binary_function<int, int, bool>> = {<No data fields>}
{}}}, <No data fields>}, <No data fields>}, c = {
keys = {<QListSpecialMethods<int>> = {<QListSpecialMethodsBase<int>> ={{{}
{{{} values = {<QListSpecialMethods<QQmlJSCompilePass::VirtualRegister>> = {<QListSpecialMethodsBase<QQmlJSCompilePass::VirtualRegister>> = {<No data fields>}
{}}}, <No data fields>}, d = {d = 0x5a9e197a6af0, ptr = 0x5a9e197a6b00, size = 3}},{}}}
m_readRegisters = {<QFlatMapValueCompare<int, QQmlJSCompilePass::VirtualRegister, std::less<int> >> = {<std::less<int>> = {<std::binary_function<int, int, bool>> ={{{}
{{{} keys = {<QListSpecialMethods<int>> = {<QListSpecialMethodsBase<int>> = {<No data fields>}
{}}}, <No data fields>}, d = {d = 0x5a9e194959d0, ptr = 0x5a9e194959e0, size = 1,{}}}
values = {<QListSpecialMethods<QQmlJSCompilePass::VirtualRegister>> = {<QListSpecialMethodsBase<QQmlJSCompilePass::VirtualRegister>> ={{{}
{}}}, <No data fields>}, d = {d = 0x5a9e19d7df00, ptr = 0x5a9e19d7df10, size = 1}}, m_changedRegister ={}}}{{{}
{ d = 0x5a9e194d9970}{}}}, m_changedRegisterIndex = 9, m_hasSideEffects = true, m_isRename = false, m_isShadowable = false}, accumulatorVariableIn = {d ={{{}
{d = 0x5a9e19409660, ptr = 0x5a9e19409670 u"r2_4", size = 4}{}}}, static _empty = 0 u'\000'}, accumulatorVariableOut ={{{}{ d =
{d = 0x0, ptr = 0x0, size = 0}{}}}, static _empty = 0 u'\000'{}}}
(gdb) p qjsList
$3 = {d ={{{}
{}}}, static _empty = 0 u'\000'}{}
Attachments
Issue Links
- duplicates
-
QTBUG-135288 qmlsc: crash on if + for
-
- Closed
-