[Development] Question about Qt's future
Simon Hausmann
simon.hausmann at digia.com
Thu Apr 24 09:47:50 CEST 2014
On Monday 21. April 2014 10.41.52 Christoph Feck wrote:
> On Monday 21 April 2014 05:27:33 Joshua Kolden wrote:
> > I’m curious why you are not interested in QML.
> > [...]
> > I see no reason to stay with Qt Widgets at all other than legacy
> > application support. So what is your concern?
> > [...]
>
> Not speaking for Michael, but let me add that C++ is much easier to
> debug compared to QML, if you get a crash. We have nearly hundred
> backtraces in the Plasma bug tracker that point back to crashes in
> QtDeclarative, without a single clue where the crash comes from. For
> examples see bugs 328234, 332131, 331060, 333621, 333532, 333334,
> 332995, or 332646 to cite only some fairly recent ones.
>
> I am not blaming QML here, all those bugs are possibly caused by
> errors in Plasma itself, but the fact that you cannot see from the
> backtrace what caused the crash is a major concern for me.
Let's turn this from a blame game into something more productive.
The nature of the beast is that we do have two language environments here and
they do (and can't) share the same stack, so stack traces will always be
separate. However there are ways of determining the "current" JavaScript stack
trace in parallel. Note that this isn't possible with Qt 5.1 or older, but
starting with Qt 5.2 it is possible.
Friedemann was kind enough to lay the infrastructure for that in QtQml and
used it on the Qt Creator side, in a way that could also be used by KDE's
drkonqi:
It will require a little bit of analysis and interaction with gdb, but I think
it's doable. It will require looking at the frames gdb reports, and if you see
functions that take a QV4::ExecutionContext * as a parameter, then you can
extract the "address" from the gdb output and then call the qt_v4StackTrace
function in QtQml from within gdb. It will print out a JavaScript stack trace.
This works rather well and Qt Creator 3.1 provides it through the context menu
in the debugger, if you'd like to try it out yourself.
This way bug reports in KDE that somehow involve Qt JavaScript execution can -
in parallel - include a C++ backtrace and a JS stack trace.
Simon
More information about the Development
mailing list