https://bugs.kde.org/show_bug.cgi?id=509192

--- Comment #2 from mydarkstar <[email protected]> ---
I did some further analysis on the Qt crash. This looks very much like a null
dereference.

(gdb) f 7
#7  QQuickStackElement::initialize (this=this@entry=0x6283e859d020,
requiredProperties=requiredProperties@entry=0x0)
    at
/usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickstackelement.cpp:210
210             QV4::ExecutionEngine *v4 =
QQmlEnginePrivate::getV4Engine(engine);

(gdb) l -
195     void QQuickStackElement::initialize(RequiredProperties
*requiredProperties)
196     {
197         if (!item || init)
198             return;
199
200         QQuickItemPrivate *p = QQuickItemPrivate::get(item);
201         if (!(widthValid = p->widthValid()))
202             item->setWidth(view->width());
203         if (!(heightValid = p->heightValid()))
204             item->setHeight(view->height());
(gdb) l +
205         item->setParentItem(view);
206
207         if (!properties.isUndefined()) {
208             QQmlEngine *engine = qmlEngine(view);
209             Q_ASSERT(engine);
210             QV4::ExecutionEngine *v4 =
QQmlEnginePrivate::getV4Engine(engine);
211             Q_ASSERT(v4);
212             QV4::Scope scope(v4);
213             QV4::ScopedValue ipv(scope, properties.value());
214             QV4::Scoped<QV4::QmlContext> qmlContext(scope,
qmlCallingContext.value());
(gdb) l +
215             QV4::ScopedValue qmlObject(scope, QV4::QObjectWrapper::wrap(v4,
item));
216             QQmlComponentPrivate::setInitialProperties(
217                 v4, qmlContext, qmlObject, ipv, requiredProperties, item,
218                 component ?
QQmlComponentPrivate::get(component)->state.creator() : nullptr);
219             properties.clear();
220         }
221
222         if (requiredProperties && !requiredProperties->empty()) {
223             QString error;
224             for (const auto &property: *requiredProperties) {

(gdb) p view
$47 = (QQuickStackView *) 0x6283e87b14b0
(gdb) p engine
$46 = (QQmlEngine *) 0x0

(gdb) disassemble/s $pc-64, $pc+64
Dump of assembler code from 0x7d56e33393b8 to 0x7d56e3339438:
/usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickstackelement.cpp:
203         if (!(heightValid = p->heightValid()))
   0x00007d56e33393b8
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+104>:  imul  
$0x24748b49,(%rcx),%eax

204             item->setHeight(view->height());
205         item->setParentItem(view);
   0x00007d56e33393be
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+110>:  js    
0x7d56e3339409 <_ZN18QQuickStackElement10initializeEP18RequiredProperties+185>
   0x00007d56e33393c0
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+112>:  mov   
0x40(%rsp),%edi
   0x00007d56e33393c4
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+116>:  call  
*0x132bbe(%rip)        # 0x7d56e346bf88

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4persistent_p.h:
113         bool isUndefined() const { return !val || val->isUndefined(); }
   0x00007d56e33393ca
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+122>:  mov   
0x98(%r12),%rax
   0x00007d56e33393d2
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+130>:  test  
%rax,%rax
   0x00007d56e33393d5
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+133>:  je    
0x7d56e3339507 <_ZN18QQuickStackElement10initializeEP18RequiredProperties+439>

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/common/qv4staticvalue_p.h:
287         inline bool isUndefined() const { return _val == 0; }
   0x00007d56e33393db
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+139>:  cmpq  
$0x0,(%rax)
   0x00007d56e33393df
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+143>:  je    
0x7d56e3339507 <_ZN18QQuickStackElement10initializeEP18RequiredProperties+439>

/usr/src/debug/qt6-declarative/qtdeclarative/src/quicktemplates/qquickstackelement.cpp:
208             QQmlEngine *engine = qmlEngine(view);
   0x00007d56e33393e5
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+149>:  mov   
0x78(%r12),%rdi
   0x00007d56e33393ea
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+154>:  call  
*0x132900(%rip)        # 0x7d56e346bcf0

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsapi/qjsengine.h:
320         QV4::ExecutionEngine *handle() const { return m_v4Engine; }
   0x00007d56e33393f0
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+160>:  mov   
0x98(%r12),%rdx
=> 0x00007d56e33393f8
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+168>:  mov   
0x10(%rax),%r13

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4scopedvalue_p.h:
66          explicit Scope(ExecutionEngine *e)
   0x00007d56e33393fc
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+172>:  xor   
%eax,%eax

67              : engine(e)
68              , mark(engine->jsStackTop)
   0x00007d56e33393fe
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+174>:  mov   
0x8(%r13),%r15

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4persistent_p.h:
90              return (val ? val->asReturnedValue() : Encode::undefined());
   0x00007d56e3339402
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+178>:  test  
%rdx,%rdx
   0x00007d56e3339405
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+181>:  je    
0x7d56e333940a <_ZN18QQuickStackElement10initializeEP18RequiredProperties+186>

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/common/qv4staticvalue_p.h:
452         constexpr ReturnedValue asReturnedValue() const { return _val; }
   0x00007d56e3339407
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+183>:  mov   
(%rdx),%rax

130         QV4_NEARLY_ALWAYS_INLINE constexpr void setRawValue(quint64 raw) {
_val = raw; }
   0x00007d56e333940a
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+186>:  mov   
%rax,(%r15)

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4persistent_p.h:
90              return (val ? val->asReturnedValue() : Encode::undefined());
   0x00007d56e333940d
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+189>:  mov   
0xa0(%r12),%rax

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4engine_p.h:
167             jsStackTop = ptr + nValues;
   0x00007d56e3339415
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+197>:  lea   
0x10(%r15),%rdx

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4persistent_p.h:
90              return (val ? val->asReturnedValue() : Encode::undefined());
   0x00007d56e3339419
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+201>:  test  
%rax,%rax
   0x00007d56e333941c
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+204>:  je    
0x7d56e3339c0f <_ZN18QQuickStackElement10initializeEP18RequiredProperties+2239>

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/common/qv4staticvalue_p.h:
452         constexpr ReturnedValue asReturnedValue() const { return _val; }
   0x00007d56e3339422
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+210>:  mov   
(%rax),%rax

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/jsruntime/qv4engine_p.h:
167             jsStackTop = ptr + nValues;
   0x00007d56e3339425
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+213>:  mov   
%rdx,0x8(%r13)

/usr/src/debug/qt6-declarative/qtdeclarative/src/qml/common/qv4staticvalue_p.h:
315         inline bool isManagedOrUndefined() const { return (_val &
ManagedMask) == 0; }
   0x00007d56e3339429
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+217>:  movabs
$0x7ff1000000000000,%rdx
   0x00007d56e3339433
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+227>:  test  
%rdx,%rax
   0x00007d56e3339436
<_ZN18QQuickStackElement10initializeEP18RequiredProperties+230>:  jne   
0x7d56e333945d <_ZN18QQuickStackElement10initializeEP18RequiredProperties+269>
End of assembler dump.

We are doing MOV 0x10(%rax), %r13 with %rax = 0x0.

I'm not sure why qmlEngine(view) returned null, as I'm working from a coredump.
Although I was previously able to reproduce this issue on the same device,
currently I am unable to.

I would appreciate if someone could help me out re-filing this issue and
potentially submitting it upstream.
I do not have any accounts for that, nor do I know whether it is relevant.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to