Package: libqt5qml5
Version: 5.10.1-3

Hi,

during package build of, for example, qtwebsockets-opensource-src
(5.10.1-2) its testsuite gets a segfault.

I can get a backtrace; unfortunately, most values for inspection
are optimised out though:

(gdb) bt
#0  0xf7f96035 in ?? ()
#1  0x02290450 in ?? ()
#2  0xf4a345f7 in memcpy (__len=<optimized out>, __src=0xffe44df0, 
__dest=<optimized out>)
    at /usr/include/x86_64-linux-gnux32/bits/string_fortified.h:34
#3  QV4::ExecutionContext::newCallContext (this=<optimized out>, 
function=<optimized out>,
    callData=<optimized out>) at jsruntime/qv4context.cpp:94
#4  0xf4a37204 in QV4::ExecutionContext::call (this=<optimized out>, scope=..., 
callData=<optimized out>,
    function=<optimized out>, f=f@entry=0x0) at jsruntime/qv4context.cpp:274
#5  0xf4a8a648 in QV4::Script::run (this=<optimized out>) at 
jsruntime/qv4script.cpp:178
#6  0xf4b36b5d in QQmlScriptData::scriptValueForContext (this=<optimized out>, 
parentCtxt=<optimized out>)
    at qml/qqmltypeloader.cpp:2923
#7  0xf4ba74ed in QQmlObjectCreator::create (this=<optimized out>, 
subComponentIndex=<optimized out>,
    parent=<optimized out>, interrupt=<optimized out>) at 
qml/qqmlobjectcreator.cpp:196
#8  0xf4ba65ae in QQmlObjectCreator::createInstance (this=this@entry=0x22aa940, 
index=3,
    parent=<optimized out>, isContextObject=isContextObject@entry=false) at 
qml/qqmlobjectcreator.cpp:1183
#9  0xf4ba47d6 in QQmlObjectCreator::setPropertyBinding 
(this=this@entry=0x22aa940,
    property=property@entry=0xe85723f8, binding=binding@entry=0xf7f97630) at 
qml/qqmlobjectcreator.cpp:827
#10 0xf4ba5114 in QQmlObjectCreator::setupBindings (this=this@entry=0x22aa940,
    applyDeferredBindings=applyDeferredBindings@entry=false) at 
qml/qqmlobjectcreator.cpp:779
#11 0xf4ba5973 in QQmlObjectCreator::populateInstance 
(this=this@entry=0x22aa940, index=-1, index@entry=0,
    instance=0x0, bindingTarget=0x0, 
valueTypeProperty=valueTypeProperty@entry=0x0)
    at qml/qqmlobjectcreator.cpp:1408
#12 0xf4ba672b in QQmlObjectCreator::createInstance (this=this@entry=0x22aa940, 
index=index@entry=0,
    parent=parent@entry=0x0, isContextObject=isContextObject@entry=true) at 
qml/qqmlobjectcreator.cpp:1272
#13 0xf4ba72cb in QQmlObjectCreator::create (this=<optimized out>, 
subComponentIndex=<optimized out>,
    parent=parent@entry=0x0, interrupt=interrupt@entry=0x0) at 
qml/qqmlobjectcreator.cpp:202
#14 0xf4b18269 in QQmlComponentPrivate::beginCreate (this=<optimized out>, 
context=<optimized out>)
    at qml/qqmlcomponent.cpp:864
#15 0xf4b1640f in QQmlComponent::create (this=<optimized out>, 
context=0x20b3f30) at qml/qqmlcomponent.cpp:773
#16 0xf5121134 in QQuickView::continueExecute() () from 
/usr/lib/x86_64-linux-gnux32/libQt5Quick.so.5
#17 0xf51216d2 in QQuickViewPrivate::execute() () from 
/usr/lib/x86_64-linux-gnux32/libQt5Quick.so.5
#18 0xf775f18c in quick_test_main(int, char**, char const*, char const*) ()
   from /usr/lib/x86_64-linux-gnux32/libQt5QuickTest.so.5
#19 0xf632e6a7 in __libc_start_main () from /lib/x86_64-linux-gnux32/libc.so.6
#20 0x004005bb in _start ()
(gdb) frame 3
#3  QV4::ExecutionContext::newCallContext (this=<optimized out>, 
function=<optimized out>,
    callData=<optimized out>) at jsruntime/qv4context.cpp:94
(gdb) print *c
value has been optimized out
(gdb) print c->callData
value has been optimized out
(gdb) print callData
$8 = <optimized out>
(gdb) print sizeof(CallData)
$9 = 24
(gdb) print sizeof(Value)
$10 = 8
(gdb) print c->locals.values
value has been optimized out
(gdb) print c->locals
value has been optimized out
(gdb) print sizeof(CallContext::Data)
$11 = 64
(gdb) print localsAndFormals
$12 = 0
(gdb) print callData->argc
value has been optimized out
(gdb) frame 2
#2  0xf4a345f7 in memcpy (__len=<optimized out>, __src=0xffe44df0, 
__dest=<optimized out>)
    at /usr/include/x86_64-linux-gnux32/bits/string_fortified.h:34
34        return __builtin___memcpy_chk (__dest, __src, __len, __bos0 (__dest));
(gdb) disas
Dump of assembler code for function 
QV4::ExecutionContext::newCallContext(QV4::Function*, QV4::CallData*):
   0xf4a344e0 <+0>:     push   %r15
[…]
   0xf4a345d7 <+247>:   cmp    %eax,%edi
   0xf4a345d9 <+249>:   jne    0xf4a345d0 
<QV4::ExecutionContext::newCallContext(QV4::Function*, QV4::CallData*)+240>
   0xf4a345db <+251>:   mov    %edi,0x4(%ebx)
   0xf4a345df <+255>:   mov    0x0(%ebp),%eax
   0xf4a345e3 <+259>:   mov    %rbp,%rsi
   0xf4a345e6 <+262>:   mov    %ecx,0xc(%esp)
   0xf4a345eb <+267>:   lea    0x10(,%rax,8),%edx
   0xf4a345f2 <+274>:   callq  0xf4927b70 <memcpy@plt>
=> 0xf4a345f7 <+279>:   mov    0xc(%esp),%ecx
   0xf4a345fc <+284>:   mov    0x14(%ecx),%eax
   0xf4a34600 <+288>:   cmp    %eax,0x0(%ebp)
   0xf4a34604 <+292>:   jge    0xf4a34633 
<QV4::ExecutionContext::newCallContext(QV4::Function*, QV4::CallData*)+339>
[…]
(gdb) frame 1
#1  0x02290450 in ?? ()
(gdb) disas
No function contains program counter for selected frame.
(gdb) frame 0
#0  0xf7f96035 in ?? ()
(gdb) disas
No function contains program counter for selected frame.

This looks like a jump into nothing… from a call to memcpy?

Reply via email to