Nautilus crashes when anything Ubuntu One-related is clicked in the menu
Affects | Status | Importance | Assigned to | Milestone | ||
---|---|---|---|---|---|---|
Ubuntu One Client | Status tracked in Trunk | |||||
Stable-1-4 |
Fix Released
|
High
|
Roman Yepishev | |||
Trunk |
Fix Released
|
Medium
|
Rodrigo Moya | |||
ubuntuone-client (Ubuntu) |
Fix Released
|
Undecided
|
Roman Yepishev | |||
Bug Description
This is rather hard to reproduce, but here's my attempt:
Refreshing the folder:
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
Selecting volia-traffic_ folder using the mouse:
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
Calling Menu on volia-traffic_
(nothing happens)
Clicking "Share this on Ubuntu One":
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): UbuntuOne-
(nautilus:933): GLib-CRITICAL **: g_path_
(nautilus:933): Gtk-CRITICAL **: gtk_entry_set_text: assertion `text != NULL' failed
Nautilus does not crash in this example, but look at data->path pointer that was passed to ubuntuone_
Additionally, data pointer for "volia-traffic_" folder has changed to the previous one, from 0xb1d0e170 which has a valid path, to 0x9169810, which has everything set to NULL in this case. You might notice that 0x9169810 was allocated when the user selected the folder using the mouse. Since uon->share_cb_data existed in get_menu_items, it got free()d and then a new pointer was allocated. But, somehow, Nautilus preserved the old pointer and passed it to share_dialog_
What is strange is why would ubuntuone_
Related branches
- Alejandro J. Cura (community): Approve
- Rodrigo Moya (community): Approve
-
Diff: 147 lines (+24/-22)1 file modifiednautilus/ubuntuone-nautilus.c (+24/-22)
- dobey (community): Needs Resubmitting
- Alejandro J. Cura (community): Approve
- Rodrigo Moya (community): Approve
-
Diff: 147 lines (+24/-22)1 file modifiednautilus/ubuntuone-nautilus.c (+24/-22)
Changed in ubuntuone-client: | |
status: | New → Confirmed |
assignee: | nobody → Ubuntu One Desktop+ team (uone-desktop) |
tags: | added: desktop+ |
Changed in ubuntuone-client: | |
importance: | Low → High |
assignee: | Ubuntu One Desktop+ team (ubuntuone-desktop+) → Roman Yepishev (rye) |
summary: |
- Nautilus crashes when "Share on Ubuntu One" is clicked + Nautilus crashes when anything Ubuntu One-related is clicked in the menu |
Changed in ubuntuone-client (Ubuntu): | |
assignee: | nobody → Roman Yepishev (rye) |
Changed in ubuntuone-client: | |
status: | Confirmed → Fix Committed |
Changed in ubuntuone-client: | |
status: | Fix Committed → In Progress |
assignee: | Roman Yepishev (rye) → Rodrigo Moya (rodrigo-moya) |
importance: | High → Medium |
Carrying around our own structure for the menu item might be an overkill.
Each Glib object already "carries around a table of associations from strings to pointers.".
So, probably, we need to dump the custom shared structure that gets freed spontaneously and stuff everything into the menu item object with g_object_ set_data/ g_object_ set_data_ full calls which gets passed to the callback routine.
Nautilus does not appear to have anything in code that could call the menu provider for an item activation but I will poke it some more.