Pidgin segfaults Metacity using unity-2d in 12.04 due to liboverlay-scrollbar
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
pidgin (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
Using pidgin 1:2.10.3-0ubuntu1 , overlay-scrollbar 0.2.16+
I was reliably blowing up Metacity, if not Xorg itself, trying to launch Pidgin; see mess of a pidgin -d log below that hinted the problem might have something to do with scrollbars - and lo: setting LIBOVERLAY_
Presumably this should be easy to reproduce. I would've been happy to just have had a startup script thrown in as a patch so as to not run into it. Under certain circumstances I may've managed to get it to take out more than just Metacity, like the entire X.org session, but I lost track of what exactly might reproduce that other than "trying repeatedly, because how the heck did a boring app like Pidgin manage to break?" It appears that was probably just an OOM kill for a crowded session with long uptime being stressed by whatever ridiculous thing X.org is being asked to do until it realizes it can't.
floid@miscreant:~$ pidgin -d
(22:44:06) prefs: Reading /home/floid/
(22:44:06) prefs: Finished reading /home/floid/
(22:44:06) prefs: purple_
(22:44:06) dbus: okkk
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) prpl-loubserp-mxit: Loading MXit libPurple plugin...
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) plugins: probing /usr/lib/
(22:44:06) util: Reading file xmpp-caps.xml from directory /home/floid/.purple
(22:44:06) util: File /home/floid/
not necessarily an error)
(22:44:06) jabber: creating hash tables for data objects
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) util: Reading file accounts.xml from directory /home/floid/.purple
(22:44:06) util: File /home/floid/
(22:44:06) util: Reading file status.xml from directory /home/floid/.purple
(22:44:06) certificate: CertificateVerifier x509, singleuse requested but not found.
(22:44:06) certificate: CertificateVerifier singleuse registered
(22:44:06) certificate: CertificatePool x509, ca requested but not found.
(22:44:06) certificate: CertificateScheme x509 requested but not found.
(22:44:06) certificate/
(22:44:06) certificate/
(22:44:06) certificate: CertificatePool ca registered
(22:44:06) certificate: CertificatePool x509, tls_peers requested but not found.
(22:44:06) certificate: CertificatePool tls_peers registered
(22:44:06) certificate: CertificateVerifier x509, tls_cached requested but not found.
(22:44:06) certificate: CertificateVerifier tls_cached registered
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/proxy/type changed, scheduling save.
(22:44:06) prefs: /purple/proxy/host changed, scheduling save.
(22:44:06) prefs: /purple/proxy/port changed, scheduling save.
(22:44:06) prefs: /purple/
(22:44:06) prefs: /purple/
(22:44:06) certificate: CertificateScheme x509 requested but not found.
(22:44:06) certificate: CertificateScheme x509 registered
(22:44:06) util: Reading file smileys.xml from directory /home/floid/.purple
(22:44:06) util: File /home/floid/
(22:44:06) stun: using server
(22:44:07) sound: Initializing sound output drivers.
(22:44:07) prefs: /pidgin/
(22:44:07) prefs: purple_
(22:44:08) gtkmedia: Registering media element types
(22:44:08) util: Reading file blist.xml from directory /home/floid/.purple
(22:44:08) util: File /home/floid/
(22:44:08) plugins: Loading saved plugin /usr/lib/
(22:44:08) plugins: Loading saved plugin /usr/lib/
(22:44:08) plugins: Loading saved plugin /usr/lib/
(22:44:08) pounce: Error reading pounces: Failed to open file '/home/
(22:44:08) Session Management: ICE initialized.
(22:44:08) Session Management: Connecting with no previous ID
(22:44:08) Session Management: Handling new ICE connection...
(22:44:08) done.
(22:44:08) Session Management: Connected to manager (gnome-session) with client ID 10c3d4b442a92b6
(22:44:08) Session Management: Using pidgin as command
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gdk: Native Windows wider or taller than 65535 pixels are not supported
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: _ubuntu_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: g_object_ref: assertion `G_IS_OBJECT (object)' failed
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) GLib-GObject: invalid (NULL) pointer instance
(22:44:09) GLib-GObject: g_signal_
(22:44:09) Gtk: gtk_scrolled_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gdk: Native Windows wider or taller than 65535 pixels are not supported
(22:44:09) Gtk: IA__gtk_
(22:44:09) Gtk: IA__gtk_
(22:44:10) Session Management: Received first save_yourself
(22:44:10) Session Management: Received save_complete
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
(22:44:10) Gtk: IA__gtk_
The program 'Pidgin' received an X Window System error.
This probably reflects a bug in the program.
The error was 'BadAlloc (insufficient resources for operation)'.
(Details: serial 532 error_code 11 request_code 53 minor_code 0)
(Note to programmers: normally, X errors are reported asynchronously;
that is, you will receive the error a while after causing it.
To debug your program, run it with the --sync command line
option to change this behavior. You can then get a meaningful
backtrace from your debugger if you break on the gdk_x_error() function.)
floid@miscreant:~$ LIBOVERLAY_
{Metacity restarted from console after segfaulting sometime concurrent with the BadAlloc; Pidgin now running happily.}
After somehow forgetting about this, I now note the place to stick the 'patch' override is /usr/share/ applications/ pidgin. desktop, making the Exec line:
Exec=LIBOVERLAY _SCROLLBAR= 0 pidgin
Sadly the whole Unity/Dash morass made it a bit difficult to track that down (and this even for someone well aware of .desktop files, just not sure where the applicable one was sitting).