Oxide segfault in reminders app

Bug #1338639 reported by Riccardo Padovani
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Oxide
Fix Released
High
Olivier Tilloy
1.1
Fix Released
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
Revision history for this message
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.

Revision history for this message
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)
Changed in oxide:
status: In Progress → Fix Committed
Revision history for this message
Chris Coulson (chrisccoulson) wrote :

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

Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.