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

--- Comment #59 from Bernhard Übelacker <bernha...@mailbox.org> ---
Tried to find out what in method QV4::Value::as should happen.
I _think_ the loop is entered with more or less the _val member
casted to const QV4::VTable *.
At least when I try this manually I end up with the same invalid pointer.


So it looks like the parents parent pointer got truncated somehow:
  0x7fbc4810
  0x7fbc48105d72


QV4::Value::as
                            const VTable *vt = m()->vtable();
                            while (vt) {
                                if (vt == T::staticVTable())
                                    return static_cast<const T *>(this);
                                vt = vt->parent;
                            }
                            return 0;



# gdb -q --pid 9545
...
(gdb) set height 0
(gdb) set width 0
(gdb) directory /path/to/qtdeclarative-opensource-src-5.6.1/src/qml
...
(gdb) source /usr/share/doc/kdesdk-scripts/examples/kde-devel-gdb
(gdb) up
...
(gdb) 
#6  QV4::Value::as<QV4::QQmlValueTypeWrapper const> (this=0x7fbc2d3bd320) at
../../include/QtQml/5.6.1/QtQml/private/../../../../../src/qml/jsruntime/qv4value_p.h:351
warning: Source file is more recent than executable.
351                 vt = vt->parent;
...
(gdb) print vt
$1 = (const QV4::VTable *) 0x7fbc4810
(gdb) print *vt
Cannot access memory at address 0x7fbc4810


(gdb) up
#7  QQmlBinding::write (this=this@entry=0x55a99a0, core=..., result=...,
isUndefined=<optimized out>, flags=...) at qml/qqmlbinding.cpp:257
257                 if (const QV4::QQmlValueTypeWrapper *vtw = result.as<const
QV4::QQmlValueTypeWrapper>()) {


(gdb) print/x result._val
$2 = 0x7fbc48105c30
(gdb) print/x *(const QV4::VTable *)result._val
$3 = {parent = 0x7fbc48105d72, isExecutionContext = 0x0, isString = 0x0,
isObject = 0x0, isFunctionObject = 0x0, isErrorObject = 0x0, isArrayData = 0x0,
unused = 0x0, type = 0x0, className = 0x0, destroy = 0x0, markObjects = 0x0,
isEqualTo = 0x0}


(gdb) print/x ((const QV4::VTable *)result._val)->parent
$4 = 0x7fbc48105d72
(gdb) print/x *(((const QV4::VTable *)result._val)->parent)
$5 = {parent = 0x7fbc4810, isExecutionContext = 0x0, isString = 0x0, isObject =
0x0, isFunctionObject = 0x0, isErrorObject = 0x0, isArrayData = 0x0, unused =
0x0, type = 0x0, className = 0x0, destroy = 0x0, markObjects = 0x0, isEqualTo =
0x0}


(gdb) print/x (((const QV4::VTable *)result._val)->parent)->parent
$6 = 0x7fbc4810
(gdb) print/x *((((const QV4::VTable *)result._val)->parent)->parent)
Cannot access memory at address 0x7fbc4810


(gdb) print &QV4::QQmlValueTypeWrapper::static_vtbl
$9 = (const QV4::ObjectVTable *) 0x7fbc5e97f100
<QV4::QQmlValueTypeWrapper::static_vtbl>

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

Reply via email to