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

[REG 6.9.0 -> 6.9.1] qmlformat crashes on musl

    XMLWordPrintable

Details

    • f2e8a9b49 (dev), cb1eaacd1 (dev), 4150f0180 (6.10), 9e21a4139 (6.9), 325ce9261 (tqtc/lts-6.8)

    Description

      We tried Qt 6.9.1 on our CI and qmlformat crashes on our AlpineLinux (musl-based) container with attached qml file. We cannot reproduce it on ArchLinux (glibc) here.
      Qt 6.9.0 works without problems.

      (gdb) run /root/source/src/ui/qml/modules/AuthView/+desktop/internal/AuthController.qml
      Starting program: /root/dist/bin/qmlformat /root/source/src/ui/qml/modules/AuthView/+desktop/internal/AuthController.qml
      warning: Error disabling address space randomization: Function not implemented
      
      Program received signal SIGSEGV, Segmentation fault.
      0x000060d50ae5eaca in QArrayDataPointer<QQmlJS::Dom::Comment>::QArrayDataPointer(QArrayDataPointer<QQmlJS::Dom::Comment> const&) ()
      (gdb) thread apply all bt
      
      Thread 1 (process 1449 "qmlformat"):
      #0  0x000060d50ae5eaca in QArrayDataPointer<QQmlJS::Dom::Comment>::QArrayDataPointer(QArrayDataPointer<QQmlJS::Dom::Comment> const&) ()
      #1  0x000060d50aea0f11 in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::StatementList*) ()
      #2  0x00006ffc097a85dd in QQmlJS::AST::StatementList::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #3  0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #4  0x000060d50ae9eba0 in QQmlJS::Dom::ScriptFormatter::lnAcceptIndented(QQmlJS::AST::Node*) ()
      #5  0x000060d50aea07db in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::CaseClause*) ()
      #6  0x00006ffc097a8a92 in QQmlJS::AST::CaseClause::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #7  0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #8  0x000060d50ae9eb40 in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::CaseClauses*) ()
      #9  0x00006ffc097a8a41 in QQmlJS::AST::CaseClauses::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #10 0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #11 0x000060d50ae9f09b in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::CaseBlock*) ()
      #12 0x00006ffc097a89e6 in QQmlJS::AST::CaseBlock::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #13 0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #14 0x000060d50ae9f062 in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::SwitchStatement*) ()
      #15 0x00006ffc097a8998 in QQmlJS::AST::SwitchStatement::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #16 0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #17 0x000060d50aea0e86 in QQmlJS::Dom::ScriptFormatter::visit(QQmlJS::AST::StatementList*) ()
      #18 0x00006ffc097a85dd in QQmlJS::AST::StatementList::accept0(QQmlJS::AST::BaseVisitor*) () from /root/dist/bin/../lib/libQt6Qml.so.6
      #19 0x000060d50adf9887 in QQmlJS::AST::Node::accept(QQmlJS::AST::Node*, QQmlJS::AST::BaseVisitor*) ()
      #20 0x000060d50aea0d1e in QQmlJS::Dom::reformatAst(QQmlJS::Dom::OutWriter&, std::shared_ptr<QQmlJS::Dom::AstComments> const&, std::function<QStringView (QQmlJS::SourceLocation)> const&, QQmlJS::AST::Node*) ()
      #21 0x000060d50ae6665e in QQmlJS::Dom::ScriptExpression::writeOut(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&) const ()
      #22 0x000060d50ada4567 in QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const ()
      #23 0x000060d50ae6b063 in QQmlJS::Dom::MethodInfo::writeOutBody(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&) const ()
      #24 0x000060d50ada4567 in QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const ()
      #25 0x000060d50ae77a4f in QQmlJS::Dom::QmlObject::writeOutSortedAttributes(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&, QQmlJS::Dom::DomItem const&) const ()
      #26 0x000060d50ae784d9 in QQmlJS::Dom::QmlObject::writeOut(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&, QString const&) const ()
      #27 0x000060d50ad964d1 in std::__detail::__variant::__gen_vtable_impl<std::__detail::__variant::_Multi_array<std::__detail::__variant::__deduce_visit_result<void> (*)(QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const::{lambda(auto:1&&)#1}&, std::variant<QQmlJS::Dom::ConstantData, QQmlJS::Dom::Empty, QQmlJS::Dom::List, QQmlJS::Dom::ListP, QQmlJS::Dom::Map, QQmlJS::Dom::Reference, QQmlJS::Dom::ScriptElementDomWrapper, QQmlJS::Dom::SimpleObjectWrap, QQmlJS::Dom::AstComments const*, QQmlJS::Dom::FileLocations::Node const*, QQmlJS::Dom::DomEnvironment const*, QQmlJS::Dom::DomUniverse const*, QQmlJS::Dom::EnumDecl const*, QQmlJS::Dom::ExternalItemInfoBase const*, QQmlJS::Dom::ExternalItemPairBase const*, QQmlJS::Dom::GlobalComponent const*, QQmlJS::Dom::GlobalScope const*, QQmlJS::Dom::JsFile const*, QQmlJS::Dom::JsResource const*, QQmlJS::Dom::LoadInfo const*, QQmlJS::Dom::MockObject const*, QQmlJS::Dom::MockOwner const*, QQmlJS::Dom::ModuleIndex const*, QQmlJS::Dom::ModuleScope const*, QQmlJS::Dom::QmlComponent const*, QQmlJS::Dom::QmlDirectory const*, QQmlJS::Dom::QmlFile const*, QQmlJS::Dom::QmlObject const*, QQmlJS::Dom::QmldirFile const*, QQmlJS::Dom::QmltypesComponent const*, QQmlJS::Dom::QmltypesFile const*, QQmlJS::Dom::ScriptExpression const*> const&)>, std::integer_sequence<unsigned long, 27ul> >::__visit_invoke(QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const::{lambda(auto:1&&)#1}&, std::variant<QQmlJS::Dom::ConstantData, QQmlJS::Dom::Empty, QQmlJS::Dom::List, QQmlJS::Dom::ListP, QQmlJS::Dom::Map, QQmlJS::Dom::Reference, QQmlJS::Dom::ScriptElementDomWrapper, QQmlJS::Dom::SimpleObjectWrap, QQmlJS::Dom::AstComments const*, QQmlJS::Dom::FileLocations::Node const*, QQmlJS::Dom::DomEnvironment const*, QQmlJS::Dom::DomUniverse const*, QQmlJS::Dom::EnumDecl const*, QQmlJS::Dom::ExternalItemInfoBase const*, QQmlJS::Dom::ExternalItemPairBase const*, QQmlJS::Dom::GlobalComponent const*, QQmlJS::Dom::GlobalScope const*, QQmlJS::Dom::JsFile const*, QQmlJS::Dom::JsResource const*, QQmlJS::Dom::LoadInfo const*, QQmlJS::Dom::MockObject const*, QQmlJS::Dom::MockOwner const*, QQmlJS::Dom::ModuleIndex const*, QQmlJS::Dom::ModuleScope const*, QQmlJS::Dom::QmlComponent const*, QQmlJS::Dom::QmlDirectory const*, QQmlJS::Dom::QmlFile const*, QQmlJS::Dom::QmlObject const*, QQmlJS::Dom::QmldirFile const*, QQmlJS::Dom::QmltypesComponent const*, QQmlJS::Dom::QmltypesFile const*, QQmlJS::Dom::ScriptExpression const*> const&) ()
      #28 0x000060d50ada4567 in QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const ()
      #29 0x000060d50ae6ffa6 in QQmlJS::Dom::QmlComponent::writeOut(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&) const ()
      #30 0x000060d50ada4567 in QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const ()
      #31 0x000060d50ae8cbfd in QQmlJS::Dom::QmlFile::writeOut(QQmlJS::Dom::DomItem const&, QQmlJS::Dom::OutWriter&) const ()
      #32 0x000060d50ada4567 in QQmlJS::Dom::DomItem::writeOut(QQmlJS::Dom::OutWriter&) const ()
      #33 0x000060d50adadce9 in QQmlJS::Dom::DomItem::writeOutForFile(QQmlJS::Dom::OutWriter&, QFlags<QQmlJS::Dom::WriteOutCheck>) const ()
      #34 0x000060d50ad7b57a in parseFile(QString const&, QQmlFormatOptions const&) ()
      #35 0x000060d50ad79bb1 in main ()
      

      Attachments

        1. AuthController.qml
          16 kB
          André Klitzing
        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            sami.shalayel Sami Shalayel
            misery André Klitzing
            Votes:
            1 Vote for this issue
            Watchers:
            5 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes