Bug 1638767
| Summary: | gnome software crash involving gs_plugin_add_category_apps in libgs_plugin_desktop-categories.so | ||||||
|---|---|---|---|---|---|---|---|
| Product: | [Fedora] Fedora | Reporter: | Matt Fagnani <matt.fagnani> | ||||
| Component: | gnome-software | Assignee: | Richard Hughes <rhughes> | ||||
| Status: | CLOSED ERRATA | QA Contact: | Fedora Extras Quality Assurance <extras-qa> | ||||
| Severity: | unspecified | Docs Contact: | |||||
| Priority: | unspecified | ||||||
| Version: | 29 | CC: | klember, rhughes | ||||
| Target Milestone: | --- | ||||||
| Target Release: | --- | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| Whiteboard: | |||||||
| Fixed In Version: | gnome-software-3.30.3-1.fc29 | Doc Type: | If docs needed, set a value | ||||
| Doc Text: | Story Points: | --- | |||||
| Clone Of: | Environment: | ||||||
| Last Closed: | 2018-10-21 15:47:21 UTC | Type: | Bug | ||||
| Regression: | --- | Mount Type: | --- | ||||
| Documentation: | --- | CRM: | |||||
| Verified Versions: | Category: | --- | |||||
| oVirt Team: | --- | RHEL 7.3 requirements from Atomic Host: | |||||
| Cloudforms Team: | --- | Target Upstream Version: | |||||
| Embargoed: | |||||||
| Attachments: |
|
||||||
|
Description
Matt Fagnani
2018-10-12 12:18:25 UTC
I reproduced crashes with the same traces several times by clicking on the Audio & Video, Communication & News, Productivity categories and More... buttons to the right of Recommended Productivity Applications and Recommended Audio & Video Applications. The trace shows that gs_plugin_add_category_apps has the argument category=0x0 which I take to mean a null pointer or empty category list. The crash is at ../plugins/core/gs-plugin-desktop-categories.c:100 100 if (desktop_groups->len > 0) gs-plugin-desktop-categories.c at https://github.com/GNOME/gnome-software/blob/master/plugins/core/gs-plugin-desktop-categories.c shows the following in the area of the crash gs_plugin_add_category_apps (GsPlugin *plugin, GsCategory *category, GsAppList *list, GCancellable *cancellable, GError **error) { GPtrArray *desktop_groups; GsCategory *parent; const GsDesktopData *msdata; guint i, j, k; /* already set */ desktop_groups = gs_category_get_desktop_groups (category); if (desktop_groups->len > 0) return TRUE; ... When desktop_groups = gs_category_get_desktop_groups (category) is run with category = 0x0, this might lead to a null value for desktop_groups. The segmentation fault shown by gdb might be due to a null pointer dereference in desktop_groups->len or something similar. Checking if category is not null before running the lines involving it might avoid the crash. The full traces have desktop_groups = 0x0 so desktop_groups->len might have been a null pointer dereference which led to the segmentation fault.
(gdb) bt full
#0 0xb4604713 in gs_plugin_add_category_apps
(plugin=0xdb57d0 [GsPlugin], category=0x0, list=0x16a0150 [GsAppList], cancellable=0x1723550 [GCancellable], error=0xaeffef50)
at ../plugins/core/gs-plugin-desktop-categories.c:100
desktop_groups = 0x0
parent = <optimized out>
msdata = <optimized out>
i = <optimized out>
j = <optimized out>
k = <optimized out>
#1 0x004957db in gs_plugin_loader_call_vfunc
(helper=<optimized out>, plugin=0xdb57d0 [GsPlugin], app=<optimized out>, list=<optimized out>, refine_flags=<optimized out>, cancellable=<optimized out>, error=<optimized out>) at ../lib/gs-plugin-loader.c:681
plugin_func = <optimized out>
action = <optimized out>
ret = 1
func = <optimized out>
error_local = 0x0
timer = <optimized out>
#2 0x00495aab in gs_plugin_loader_run_results (helper=0x1556e90,
helper@entry=0x16a0150, cancellable=0x1723550 [GCancellable],
cancellable@entry=0xdf8888 [GsPluginLoader], error=error@entry=0xaefff014)
at ../lib/gs-plugin-loader.c:1119
plugin = 0xdb57d0 [GsPlugin]
i = 0
priv = 0xdf8828
--Type <RET> for more, q to quit, c to continue without paging--c
#3 0x00496d00 in gs_plugin_loader_process_thread_cb (task=0x2a33e60 [GTask], object=0xdf8888, task_data=0x1556e90, cancellable=0x1723550 [GCancellable]) at ../lib/gs-plugin-loader.c:3112
error = 0x0
helper = 0x1723550
list = 0x528208
action = <optimized out>
plugin_loader = 0xce6884
priv = 0xce689f
filter_flags = <optimized out>
refine_flags = <optimized out>
add_to_pending_array = 0
#4 0xb7afceb6 in g_task_thread_pool_thread (thread_data=0x2a33e60, pool_data=0x0) at gtask.c:1331
task = 0x2a33e60 [GTask]
#5 0xb7cdae15 in g_thread_pool_thread_proxy (data=0xcdbe00) at gthreadpool.c:307
task = 0x2a33e60
pool = 0xcdbe00
#6 0xb7cda37f in g_thread_proxy (data=0x1517b50) at gthread.c:784
thread = 0x1517b50
__func__ = "g_thread_proxy"
#7 0xb6c375de in start_thread (arg=<optimized out>) at pthread_create.c:486
ret = <optimized out>
pd = <optimized out>
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {-1228607488, -1358955712, -1228607488, -1358958168, -1365515652, -678350260}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}}
not_first_call = 0
#8 0xb6b7372a in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:108
This crash still occurred after I downgraded to appstream-data-29-6 so it is unrelated to the update to appstream-data-29-7. In order to try the test build as suggested in #1638784, I ran sudo dnf upgrade https://kojipkgs.fedoraproject.org//work/tasks/4354/30304354/gnome-software-3.30.2-1.fc29.mr125.i686.rpm https://kojipkgs.fedoraproject.org//work/tasks/4354/30304354/gnome-software-debuginfo-3.30.2-1.fc29.mr125.i686.rpm https://kojipkgs.fedoraproject.org//work/tasks/4354/30304354/gnome-software-debugsource-3.30.2-1.fc29.mr125.i686.rpm The crashes I noted above when clicking on the categories and more... didn't occur with the test build. When I clicked on the Audio & Video and Productivity categories or more... buttons on the main screen, those screens showed up correctly. I clicked on Communication & News, Graphics & Photography, and Add-ons, but those screens were not loaded. To test the 3.30.3-1 update, I ran sudo dnf upgrade https://kojipkgs.fedoraproject.org//packages/gnome-software/3.30.3/1.fc29/i686/gnome-software-3.30.3-1.fc29.i686.rpm https://kojipkgs.fedoraproject.org//packages/gnome-software/3.30.3/1.fc29/i686/gnome-software-debuginfo-3.30.3-1.fc29.i686.rpm https://kojipkgs.fedoraproject.org//packages/gnome-software/3.30.3/1.fc29/i686/gnome-software-debugsource-3.30.3-1.fc29.i686.rpm 3.30.3 first showed "No application data found" and a pop-up box stating that it needed to be restarted to use new plugins which I did. Clicking on all of the categories and the more... button showed those screens correctly. I didn't get any crashes of 3.30.3. Thanks for your help and the updates. gnome-software-3.30.3-1.fc29 has been submitted as an update to Fedora 29. https://bodhi.fedoraproject.org/updates/FEDORA-2018-447d45de07 gnome-software-3.30.3-1.fc29 has been pushed to the Fedora 29 testing repository. If problems still persist, please make note of it in this bug report. See https://fedoraproject.org/wiki/QA:Updates_Testing for instructions on how to install test updates. You can provide feedback for this update here: https://bodhi.fedoraproject.org/updates/FEDORA-2018-447d45de07 gnome-software-3.30.3-1.fc29 has been pushed to the Fedora 29 stable repository. If problems still persist, please make note of it in this bug report. |