parole crashed with SIGSEGV in notify_provider_finalize()

Bug #1286046 reported by Elfy
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
parole
Fix Released
Medium
parole (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

Opened Parole.

Went to plugins.

Selected notify plugin - got plugin failed to load.Check your installation.

Selected tray icon plugin - same issue.

Closed plugins.

Opened plugins - both previously failed plugins now ticked.

Parole then crashed.

Reopened parole - went to plugins, both plugins not loaded.

ProblemType: Crash
DistroRelease: Ubuntu 14.04
Package: parole 0.6.0-0ubuntu1
ProcVersionSignature: Ubuntu 3.13.0-13.33-generic 3.13.5
Uname: Linux 3.13.0-13-generic x86_64
ApportVersion: 2.13.2-0ubuntu5
Architecture: amd64
CurrentDesktop: XFCE
Date: Fri Feb 28 09:22:08 2014
ExecutablePath: /usr/bin/parole
ProcCmdline: parole
SegvAnalysis:
 Segfault happened at: 0x7eff999d79cc: mov 0x30(%rax),%rax
 PC (0x7eff999d79cc) ok
 source "0x30(%rax)" (0x00000030) not located in a known VMA region (needed readable region)!
 destination "%rax" ok
SegvReason: reading NULL VMA
Signal: 11
SourcePackage: parole
StacktraceTop:
 ?? () from /usr/lib/x86_64-linux-gnu/parole-0/parole-notify.so
 g_object_unref () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
 parole_provider_module_free_plugin ()
 parole_plugins_manager_cell_toggled_cb ()
 g_cclosure_marshal_VOID__STRINGv () from /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0
Title: parole crashed with SIGSEGV in g_object_unref()
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo

Related branches

Revision history for this message
In , Karim Rekik (wkrekik) wrote :

Notification icon plugin doesn't work. I tried both systray panel plugin and notifier panel plugin and neither worked.
Xfce 4.12 installed via ppa in Xubuntu 12.04 32bit

Revision history for this message
In , Sean Davis (bluesabre) wrote :

Looks like a packaging issue, I've reported this to our package maintainer.

Revision history for this message
In , Lionel Le Folgoc (mrpouit) wrote :

Anything in ~/.xsession-error?

Mine (12.04 i386 too) is full of errors when I use the plugin dialog:
<<<
(parole:11148): GLib-GObject-WARNING **: cannot register existing type `ParoleProviderPlugin'

(parole:11148): GLib-GObject-CRITICAL **: g_type_add_interface_dynamic: assertion `g_type_parent (interface_type) == G_TYPE_INTERFACE' failed

(parole:11148): GLib-GObject-WARNING **: invalid cast from `TrayProvider' to `ParoleProviderPlugin'

** (parole:11148): CRITICAL **: parole_provider_plugin_set_player: assertion `PAROLE_IS_PROVIDER_PLUGIN (provider)' failed

** (parole:11148): CRITICAL **: parole_provider_plugin_get_is_configurable: assertion `PAROLE_IS_PROVIDER_PLUGIN (provider)' failed

(parole:11148): GLib-GObject-WARNING **: cannot register existing type `ParoleProviderPlugin'

(parole:11148): GLib-GObject-CRITICAL **: g_type_add_interface_dynamic: assertion `g_type_parent (interface_type) == G_TYPE_INTERFACE' failed

(parole:11148): GLib-GObject-WARNING **: invalid cast from `NotifyProvider' to `ParoleProviderPlugin'

** (parole:11148): CRITICAL **: parole_provider_plugin_set_player: assertion `PAROLE_IS_PROVIDER_PLUGIN (provider)' failed

** (parole:11148): CRITICAL **: parole_provider_plugin_get_is_configurable: assertion `PAROLE_IS_PROVIDER_PLUGIN (provider)' failed

(parole:11148): GLib-GObject-CRITICAL **: g_object_unref: assertion `G_IS_OBJECT (object)' failed
>>>

@Sean: the package is simply a no-change rebuild of the raring package. I don't think this is a packaging issue though. :P

Revision history for this message
In , Sean Davis (bluesabre) wrote :

Hey Lionel.

The problem is also in the Raring package.

The quantal 0.3.x packages the plugins in /usr/lib/parole-0
The new packages have the plugins in /usr/lib/x86_64-linux-gnu/parole-0

I think this is the source of the problem. The plugins try to load the files from the normal lib directory, but they fail

Revision history for this message
In , Lionel Le Folgoc (mrpouit) wrote :

No, this is a multiarch directory, fully known to the linker, so this should be fine, and strace seems to confirm:
access("/usr/lib/i386-linux-gnu/parole-0/tray-icon.so", F_OK) = 0
...
access("/usr/lib/i386-linux-gnu/parole-0/parole-notify.so", F_OK) = 0

I haven't tried too hard to debug for the moment (the 12.04 system is my pc at work :P), but I've noticed that parole doesn't check the return value of g_type_module_use (). If it returns FALSE, the loading failed.

Revision history for this message
In , Sean Davis (bluesabre) wrote :

Created attachment 5018
File listing for query "locate parole"

Hi Lionel,

If I run:
./autogen.sh --prefix=/usr
make
make install

Parole works correctly with its plugins. Attached is the output for `locate parole`. Since there is probably nothing wrong with multiarch, is there something in Parole's code that needs to be updated for better support?

Revision history for this message
In , Carlos Pita (carlosjosepita) wrote :

This is happening in xubuntu 13.10 also.

Revision history for this message
Elfy (elfy) wrote :
information type: Private → Public
Revision history for this message
Simon Steinbeiß (ochosi) wrote :

Unfortunately a long-standing issue in Parole. If only a really good packager came along and helped us fix that (it only exists in Ubuntu, Debian seems totally fine with the same packaging...)

Pasi Lallinaho (knome)
Changed in parole (Ubuntu):
status: New → Triaged
Revision history for this message
In , Sean Davis (bluesabre) wrote :

The same exact packaging is used in Debian as Ubuntu. The package works in Debian, but does not work in Ubuntu.

Revision history for this message
In , Sean Davis (bluesabre) wrote :

Also, installing the package made for/in Debian in Ubuntu works.

Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 notify_provider_finalize (object=0x7effdf07f750) at notify-provider.c:279
 g_object_unref (_object=0x7effdf07f750) at /build/buildd/glib2.0-2.39.90/./gobject/gobject.c:3112
 parole_provider_module_free_plugin (module=0x7effde948710) at parole-module.c:236
 parole_plugins_manager_cell_toggled_cb (cell_renderer=<optimized out>, path_str=<optimized out>, pref=0x7effdf045530) at parole-plugins-manager.c:277
 g_cclosure_marshal_VOID__STRINGv (closure=0x7effdf0411d0, return_value=<optimized out>, instance=<optimized out>, args=<optimized out>, marshal_data=<optimized out>, n_params=<optimized out>, param_types=0x7effdef8a140) at /build/buildd/glib2.0-2.39.90/./gobject/gmarshal.c:1004

Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in parole (Ubuntu):
importance: Undecided → Medium
summary: - parole crashed with SIGSEGV in g_object_unref()
+ parole crashed with SIGSEGV in notify_provider_finalize()
tags: removed: need-amd64-retrace
Revision history for this message
In , Sean Davis (bluesabre) wrote :

Created attachment 5425
debian rules which fixes this issue in ubuntu

This debian/rules was created to solve an issue with the Ubuntu packaging. It forces the same rules that are applied to debian. Including this upstream would be ideal.

Revision history for this message
In , Yves-Alexis Perez (corsac) wrote :

(In reply to Sean Davis from comment #9)
> Created attachment 5425 [details]
> debian rules which fixes this issue in ubuntu
>
> This debian/rules was created to solve an issue with the Ubuntu packaging.
> It forces the same rules that are applied to debian. Including this
> upstream would be ideal.

@@ -3,6 +3,7 @@

 export DEB_LDFLAGS_MAINT_APPEND=-Wl,--as-needed -Wl,-O1
 export DEB_BUILD_MAINT_OPTIONS=hardening=+all
+export LDFLAGS=-Wl,-z,relro

 %:
  dh $@ --parallel

That doesn't look right. Why not ading that to DEB_LDFLAGS_MAINT_APPEND which is the main point of that?

By the way, on Debian it's already exported by dpkg-buildflags, you might want to check it's the case also on Ubuntu.

Changed in parole:
importance: Unknown → Medium
status: Unknown → Incomplete
Revision history for this message
In , Sean Davis (bluesabre) wrote :

Created attachment 5426
debian rules v2

Here's a new, more concise version.

Revision history for this message
In , Sean Davis (bluesabre) wrote :

(In reply to Sean Davis from comment #11)
> Created attachment 5426 [details]
> debian rules v2
>
> Here's a new, more concise version.

So, with the above rules, -Bsymbolic-functions flag is removed as it breaks parole.

Referring to this write-up, https://lists.ubuntu.com/archives/ubuntu-devel/2008-May/025367.html

Rewriting Parole's plugin architecture would be a huge undertaking. Parole relies on weak symbols to initialize a plugin. Here, a base plugin's interface is overridden by the actual plugin's functionality. the -Bsymbolic-functions flag completely breaks that. Adding this protection to the packaging ensures that plugins will continue to build correctly even when default build flags are altered (as they are in Ubuntu).

Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package parole - 0.6.1-0ubuntu2

---------------
parole (0.6.1-0ubuntu2) trusty; urgency=medium

  * d/rules: Strip -Wl,-Bsymbolic-functions LDFLAGS to fix loading plugins.
    (LP: #1286046, LP: #1168810, Xfce #9904)
 -- Unit 193 <email address hidden> Wed, 09 Apr 2014 16:53:02 -0400

Changed in parole (Ubuntu):
status: Triaged → Fix Released
Revision history for this message
Carlos Pita (carlosjosepita) wrote :

Is it possible to upgrade this in the 4.10 ppa or, even better, xubuntu 3.10?

Revision history for this message
Carlos Pita (carlosjosepita) wrote :

(s/3.10/13.10/ of course)

Revision history for this message
In , Simon Steinbeiß (ochosi) wrote :

This bug has been fixed in Xubuntu 14.04 (finally).

Changed in parole:
status: Incomplete → 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.