Oxide segfault in reminders app

Bug #1338639 reported by Riccardo Padovani on 2014-07-07
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
High
Olivier Tilloy
1.1
High
Olivier Tilloy

Bug Description

I started to migrare reminders-app to Oxide[1].

It works well in tablet mode, but in phone mode there is a segfault when I try to open a note (Oxide is used to display notes).
The difference between tablet mode and phone mode is that in tablet mode the note is loaded in a sideview, in phone mode the note is pushed on top of a pagestack.

I'm not able (yet) to reproduce the crash outside the reminders-app, but I don't understand why it crashes so bad. Also, gdb says it's something about loadHtml() function: http://paste.ubuntu.com/7760088/ (sorry, I don't which signals I miss, if necessary I'll install more packages)

Please tell me if I could help to give you others informations!

[1]https://code.launchpad.net/~rpadovani/reminders-app/upgradeToOxide/+merge/225737

Related branches

Changed in oxide:
assignee: nobody → Olivier Tilloy (osomon)
Changed in oxide:
importance: Undecided → High
status: New → Triaged
Olivier Tilloy (osomon) wrote :

I can reproduce the crash on a nexus 7 with Riccardo’s branch. The crash happens on this line:

    web_contents_->GetController().LoadURLWithParams(params);

because web_contents_ is null.
This means that LoadData() is being called before the webview has been initialized. We should guard against that in oxide, and I’m going to look into why loadHtml() is being called too early on the webview.

Olivier Tilloy (osomon) wrote :

As I suspected, loadHtml() is being called before the webview is finished constructing, triggering the crash.

This happens only with the phone layout, because in tablet layout the component is instantiated dynamically, and its 'note' property is set after the fact:

    if (root.narrowMode) {
            …
    } else {
        var view = sideViewLoader.embed(Qt.resolvedUrl("ui/NoteView.qml"))
        view.note = note;
    }

A simple workaround in the reminders app, until the bug is properly fixed in oxide, would be to replace the following line:

    var page = component.createObject(root, {note: note});

by those two lines:

    var page = component.createObject(root);
    page.note = note;

(in function displayNote() in reminders.qml).

Changed in oxide:
status: Triaged → In Progress
Changed in oxide:
milestone: none → branch-1.2
Olivier Tilloy (osomon) on 2014-07-09
Changed in oxide:
status: In Progress → Fix Committed
Chris Coulson (chrisccoulson) wrote :

Do you want to merge this in to the 1.1 branch too?

Olivier Tilloy (osomon) wrote :

Merged in 1.1 branch.

Changed in oxide:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers