Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 493472 - media-sound/quodlibet-2.5 - quodlibet: RuntimeError: maximum recursion depth exceeded while calling a Python object
Summary: media-sound/quodlibet-2.5 - quodlibet: RuntimeError: maximum recursion depth ...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: AMD64 Linux
: Normal normal (vote)
Assignee: Gentoo Sound Team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2013-12-06 19:32 UTC by Manuel Ullmann
Modified: 2014-02-19 19:16 UTC (History)
3 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
Part of emerge.log with the suspect update (emerge.log,39.31 KB, text/plain)
2013-12-06 19:42 UTC, Manuel Ullmann
Details
QuodLibet window displaying nothing (QuodLibetWindow.png,30.59 KB, image/png)
2013-12-06 19:45 UTC, Manuel Ullmann
Details
Mostly empty preferences window (PreferencesWindow.png,11.77 KB, image/png)
2013-12-08 10:33 UTC, Manuel Ullmann
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Manuel Ullmann 2013-12-06 19:32:03 UTC
Since an update of lots of python relevant packages quodlibet is displaying no view mode and preferences window content. It is printing Runtime Errors to the terminal (see below).





Still there is no view mode shown. Preferences window is empty and runtime errors printed to terminal.

I'll attach the part of emerge.log, which was the python update.

Note also, that I use gentoo hardened, so maybe that is the reason, but I don't get an application crash nor logs, which is usually the symptom. Also pax-softmode did not resolve the problem.



Reproducible: Always

Steps to Reproduce:
1. Start quodlibet-2.5
2.
3.
Actual Results:  
No view mode is shown. Switching view mode causes more runtime errors to print to terminal.

Expected Results:  
Quodlibet should display everything and don't print runtime errors.

First I hit the following issue:

https://code.google.com/p/quodlibet/issues/detail?id=1200

I don't know, if it was displayed before, because I never ran quodlibet from terminal. I could workaround it with the installing udisks:0 and the described
"dbus-send --system --print-reply --dest=org.freedesktop.UDisks /org/freedesktop/UDisks org.freedesktop.UDisks.EnumerateDevices".
This however did not resolve the problem. The linked issue is fixed in quodlibet-2.6 (which has no ebuild).

Complete output is:

** Message: pygobject_register_sinkfunc is deprecated (GstObject)
W: Could not import python-gpod, iPod support disabled.
W: missing libudev symbol: 'udev_queue_get_failed_list_entry'
RuntimeError
RuntimeError
RuntimeError
Error in sys.excepthook:
RuntimeError: maximum recursion depth exceeded while calling a Python object

Original exception was:
RuntimeError: maximum recursion depth exceeded while calling a Python object

Note, that I'm using Gentoo Hardened profile. However Pax softmode does not resolve the issue and Selinux is still in permissive mode.

Before I removed my user configuration it still could play the playlist, which was not displayed.

Here comes emerge --info:
Portage 2.2.7 (hardened/linux/amd64/selinux, gcc-4.7.3, glibc-2.16.0, 3.2.51-hardened-r2 x86_64)
=================================================================
System uname: Linux-3.2.51-hardened-r2-x86_64-AMD_Turion-tm-X2_Ultra_DualCore_Mobile_ZM-84-with-gentoo-2.2
KiB Mem:     3736844 total,   1946684 free
KiB Swap:    4300796 total,   4300796 free
Timestamp of tree: Tue, 03 Dec 2013 18:15:01 +0000
ld GNU ld (GNU Binutils) 2.23.2
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p45
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.5-r3, 3.3.2-r2
dev-util/ccache:          3.1.9
dev-util/cmake:           2.8.11.2
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.12.4
sys-apps/sandbox:         2.6-r1
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6, 1.13.4
sys-devel/binutils:       2.23.2
sys-devel/gcc:            4.7.3-r1
sys-devel/gcc-config:     1.7.3
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.9 (virtual/os-headers)
sys-libs/glibc:           2.16.0
Repositories: gentoo poly-c
ACCEPT_KEYWORDS="amd64"
ACCEPT_LICENSE="* -@EULA"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -pipe -march=native"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/themes/oxygen-gtk/gtk-2.0"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo /usr/bin/startx"
CXXFLAGS="-O2 -pipe -march=native"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="assume-digests binpkg-logs ccache config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch preserve-libs protect-owned sandbox selinux sesandbox sfperms strict unknown-features-warn unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="ftp://ftp.uni-erlangen.de/pub/mirrors/gentoo"
LANG="de_DE.UTF-8"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j3"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --omit-dir-times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/var/lib/layman/poly-c"
SYNC="rsync://rsync.de.gentoo.org/gentoo-portage/"
USE="3dnow 3dnowext X aac aacplus acl acpi alsa amd64 berkdb bzip2 cdda cdio cdr cli cracklib crypt cxx dbus dri dvd dvdr faac ffmpeg flac gallium gdbm gpm gstreamer gtk gudev hardened hwdb iconv ipv6 justify kde kipi mmx mmxext modules mp3 mudflap multilib ncurses nls nptl nsplugin ogg open_perms opengl openmp pam pax_kernel pcre png qt3support qt4 readline selinux session smp spell sse sse2 ssl tcpd threads truetype udev unicode urandom vcd vorbis x264 xv xvid zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" APACHE2_MODULES="authn_core authz_core socache_shmcb unixd actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache cgi cgid dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump author" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DRACUT_MODULES="crypt lvm dm selinux" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ublox ubx" INPUT_DEVICES="synaptics evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="de" OFFICE_IMPLEMENTATION="libreoffice" PHP_TARGETS="php5-5" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_3" QEMU_SOFTMMU_TARGETS="x86_64 i386" QEMU_USER_TARGETS="x86_64 i386" RUBY_TARGETS="ruby19 ruby18" USERLAND="GNU" VIDEO_CARDS="radeon" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS, USE_PYTHON
Comment 1 Manuel Ullmann 2013-12-06 19:42:53 UTC
Created attachment 364740 [details]
Part of emerge.log with the suspect update

This is the part of emerge.log, where the by me suspected update was running. You can see, that there are lots of python relevant packages. However not python-2.7 itself.
Comment 2 Manuel Ullmann 2013-12-06 19:45:24 UTC
Created attachment 364742 [details]
QuodLibet window displaying nothing

Here you can see, that the content of view modes are not shown in quodlibet.
Comment 3 Manuel Ullmann 2013-12-06 19:47:39 UTC
Note, that I am filing this in Gentoo bugzilla because the quodlibet-faq did say so. On the other hand it seems to me, that the last update introduced this bug.
Comment 4 Manuel Ullmann 2013-12-08 10:33:07 UTC
Created attachment 364918 [details]
Mostly empty preferences window

Just for the sake of completeness.

Opening the window or changing the view mode reprints the following lines:

Original exception was:
RuntimeError: maximum recursion depth exceeded while calling a Python object
Error in sys.excepthook:
RuntimeError: maximum recursion depth exceeded while calling a Python object
Comment 5 Jeroen Roovers (RETIRED) gentoo-dev 2013-12-10 10:42:26 UTC
Did you run python-updater after upgrading dev-lang/python?
Comment 6 Manuel Ullmann 2013-12-10 18:10:57 UTC
$ eselect python list
Available Python interpreters:
  [1]   python2.7 *
  [2]   python3.3
$ eselect python list --python3
Available Python 3 interpreters:
  [1]   python3.3 *
After eselecting the new interpreter I actually ran python-updater twice, because some virtual package was broken (environment.bz2). Manually unmerging and remerging resolved the problem. Remerging alone did not help.

python-updater forgot to rebuild pytz. depclean complained about it. Manually rebuilding fixed the problem and depclean removed python-3.2.

However quodlibet is built against python-2.7, so this should not be the reason anyway. Thanks for asking. ;-)
Comment 7 Manuel Ullmann 2013-12-10 18:20:47 UTC
Saw, that the summary was changed. I don't care about the missing ipod support. The USE-Flag is not set. The message that is reprinted, when changing the view mode or open the preferences window, was written in comment 4. Changing the summary therefore, as it does not state an important error.
Comment 8 Manuel Ullmann 2013-12-10 18:29:42 UTC
$ eix quodlibet
[I] media-plugins/quodlibet-plugins
     Available versions:  2.4 2.5 {PYTHON_TARGETS="python2_7"}
     Installed versions:  2.5(15:46:19 05.10.2013)(PYTHON_TARGETS="python2_7")
     Homepage:            http://code.google.com/p/quodlibet/
     Description:         Plugins for Quod Libet and Ex Falso

[I] media-sound/quodlibet
     Available versions:  2.4 2.5 {(+)dbus gstreamer ipod +udev PYTHON_TARGETS="python2_7"}
     Installed versions:  2.5(18:13:33 06.12.2013)(dbus gstreamer udev -ipod PYTHON_TARGETS="python2_7")
     Homepage:            http://code.google.com/p/quodlibet/
     Description:         audio library tagger, manager, and player for GTK+

Found 2 matches.

If you need any additional information, just ask. ;-)
Comment 9 nopenope 2013-12-10 18:41:43 UTC
I'm having the very same problem. I've fixed it by forcing the emerge of an old version of pygobject:

emerge =dev-python/pygobject-2.28.6-r53
Comment 10 nopenope 2013-12-10 19:10:49 UTC
I can confirm that if I left the system to update to pygobject-2.28.6-r55:2

Calculating dependencies... done!
[nomerge       ] media-plugins/quodlibet-plugins-2.5  PYTHON_TARGETS="python2_7" 
[nomerge       ]  media-sound/quodlibet-2.5  USE="dbus gstreamer ipod udev" PYTHON_TARGETS="python2_7" 
[ebuild  N     ]   dev-python/pygobject-2.28.6-r55:2  USE="-examples -libffi {-test}" PYTHON_TARGETS="python2_7 -python2_6" 0 kB

quolibet breaks to the failure described in this bug.

Going back to dev-python/pygobject-2.28.6-r53 fixes the problem

Also, I can confirm pygobject is a real mess:

 *   >=dev-python/pygobject-2.26.8-r53:2[python_targets_python2_7(-),-python_single_target_python2_6(-),-python_single_target_python2_7(-)] pulled in by:
 *     dev-python/pygtk-2.24.0-r4
 * 
 *   dev-python/pygobject:2 pulled in by:
 *     media-sound/quodlibet-2.5
 * 
 *   >=dev-python/pygobject-2.28:2[python_targets_python2_7(-),-python_single_target_python2_6(-),-python_single_target_python2_7(-)] pulled in by:
 *     dev-python/gst-python-0.10.22-r1
 * 
 *   >=dev-python/pygobject-2.15.2:2[python_targets_python2_7(-),-python_single_target_python2_6(-),-python_single_target_python2_7(-)] pulled in by:
 *     dev-python/pygtksourceview-2.10.1-r1
 * 
 *   >=dev-python/pygobject-2.15.3:2 pulled in by:
 *     dev-libs/keybinder-0.3.0-r200
 * 
 *   >=dev-python/pygobject-2.8:2 pulled in by:
 *     media-libs/libgpod-0.8.2

Just as a side note, using pygobject-3.8.3 gives me no quodlibet at all:

Traceback (most recent call last):
  File "/usr/bin/quodlibet", line 19, in <module>
    import quodlibet
  File "/usr/lib64/python2.7/site-packages/quodlibet/__init__.py", line 22, in <module>
    import quodlibet.util
  File "/usr/lib64/python2.7/site-packages/quodlibet/util/__init__.py", line 605, in <module>
    class DeferredSignal(object):
  File "/usr/lib64/python2.7/site-packages/quodlibet/util/__init__.py", line 620, in DeferredSignal
    import gobject
ImportError: No module named gobject
Comment 11 Manuel Ullmann 2013-12-10 19:56:13 UTC
Downgrading to dev-python/pygobject-2.28.6-r53 indeed fixes the problem. Thank you for the tip.
Comment 12 Arne Babenhauserheide 2013-12-11 20:00:53 UTC
(In reply to Manuel Ullmann from comment #2)
> Created attachment 364742 [details]
> QuodLibet window displaying nothing
> 
> Here you can see, that the content of view modes are not shown in quodlibet.

Upstream replied that this is a known issue with quodlibet 2.5 (triggers a bug in pygtk): http://code.google.com/p/quodlibet/issues/detail?id=1304#c1

Solution: Update to 2.5.1 (which is not yet in portage).
Comment 13 Arne Babenhauserheide 2013-12-11 20:22:37 UTC
(In reply to Arne Babenhauserheide from comment #12)
> Solution: Update to 2.5.1 (which is not yet in portage).

Simply renaming the ebuild to quodlibet-2.5.1.ebuild works. My quodlibet shows lists again.
Comment 14 Arne Babenhauserheide 2013-12-11 22:23:30 UTC
Additionally to the basic solution (update the ebuild to the new version), I documented the bug solving process I used (because I had never done that before, and I think it should be more visible to new users how even complex problems can get solved without tons of domain knowledge): http://draketo.de/english/quod-libet-bug-solution-process
Comment 15 Manuel Ullmann 2013-12-13 22:13:26 UTC
You forgot to mention the creation of /usr/local/metadata/layout.conf. Otherwise portage will print a warning on invocation. Besides that, creating also the quodlibet-plugins ebuild is also useful, but I see, that this is not necessary. They both just needed to be renamed.

By the way there is an version bump ongoing for quodlibet and -plugins (bug 475156 and bug 475160). However they want to bump to 3.0.2, which is the unstable branch. Don't know, why the stable tree is not bumped. I have never seen such a efficient player. According to top it just uses 0,4% more CPU load than gst-launch playbin on my AMD 2,3 GHz mobile CPU (Turion X2).
Comment 16 Arne Babenhauserheide 2014-01-23 09:57:42 UTC
(In reply to Manuel Ullmann from comment #15)
> You forgot to mention the creation of /usr/local/metadata/layout.conf.
> Otherwise portage will print a warning on invocation. Besides that, creating
> also the quodlibet-plugins ebuild is also useful, but I see, that this is
> not necessary. They both just needed to be renamed.

You’re right, yes. (I guess  you mean /usr/local/portage/metadata/layout.conf)

Just having to rename ebuilds speaks for a solid build process of the package ☺

> By the way there is an version bump ongoing for quodlibet and -plugins (bug
> 475156 and bug 475160). However they want to bump to 3.0.2, which is the
> unstable branch. Don't know, why the stable tree is not bumped. I have never
> seen such a efficient player. According to top it just uses 0,4% more CPU
> load than gst-launch playbin on my AMD 2,3 GHz mobile CPU (Turion X2).

I don’t understand that either. Quod Libet just keeps working, and I like that a lot. Since I disabled the rescan at startup it starts quickly and is usable at once - and it scales to the tens of thousands of songs in my music library.
Comment 17 Manuel Ullmann 2014-01-23 14:03:54 UTC
Sorry for the wrong path and writing a little bit unclear.

As far as I understand, a version bump is writing a version of an ebuild. Usually this is done by gentoo devs, but somehow there seems not to be a maintainer for the quodlibet ebuilds. These version bumps are done in gentoo bugzilla to request testing and fixing any issues in the ebuild.

Quodlibet is for quite a while now at version 2.6.3 on the developer website and 2.5.1 is there even longer. So there was plenty of time to at least version bump to 2.5.1, which would have fixed this bug before the pygtk version got stable.

The only version bumps for quodlibet are at the moment those I mentioned, which are going to 3.0.2 and were not answered by gentoo devs.

Never mind, I am just having a moan. ;-)
Comment 18 Arne Babenhauserheide 2014-01-23 22:11:54 UTC
(In reply to Manuel Ullmann from comment #17)
> Sorry for the wrong path and writing a little bit unclear.

No probs ☺

> As far as I understand, a version bump is writing a version of an ebuild.
> Usually this is done by gentoo devs, but somehow there seems not to be a
> maintainer for the quodlibet ebuilds. These version bumps are done in gentoo
> bugzilla to request testing and fixing any issues in the ebuild.

Normally a version bump happens by the maintainer. If the maintainer is inactive, it happens by some user renaming the ebuild, making it work with the new version and posting a request for a version bump with the ebuild.

Developers are usually pretty quick to react to that. Key points: Not much work, the user already did the testing → Big return of investment.
Comment 19 Samuli Suominen (RETIRED) gentoo-dev 2014-02-06 11:20:22 UTC
quodlibet-3.0.2 is now in Portage, so this can be closed
Comment 20 nopenope 2014-02-17 19:28:14 UTC
Can we have in portage the 2.5.1 version of quodlibet[-plugins]? It works fine and emerging version 3.0.2 implies lots of stuff being added to my system. Plus, gnome3 programs are not honoring the color themes and the quodlibet plugins I wrote, no longer work in 3.0.2

[ebuild     U ~] media-plugins/quodlibet-plugins-3.0.2 [2.5.1] PYTHON_TARGETS="python2_7" 109 kB
[ebuild     U ~]  media-sound/quodlibet-3.0.2 [2.5.1] USE="dbus gstreamer ipod udev" PYTHON_TARGETS="python2_7" 3,975 kB
[ebuild  NS    ]   dev-python/pygobject-3.8.3:3 [2.28.6-r55:2] USE="cairo threads -examples {-test}" PYTHON_TARGETS="python2_7 python3_3 -python2_6 -python3_2" 642 kB
[ebuild  NS    ]   media-plugins/gst-plugins-meta-1.0-r1:1.0 [0.10-r8:0.10] USE="alsa ffmpeg flac http mp3 mpeg ogg taglib vorbis x264 -X -a52 -aac -cdda -dts -dv -dvb -dvd -jack -lame -libass -libvisual -mms -opus -oss -pulseaudio -theora -v4l -vcd (-vpx) -wavpack" 0 kB
[ebuild  N     ]    media-plugins/gst-plugins-libav-1.1.0_pre20130128-r1:1.0  USE="orc" 467 kB
[ebuild  NS    ]   dev-libs/keybinder-0.3.0-r300:3 [0.3.0-r200:0] USE="introspection" 339 kB
[nomerge       ] media-plugins/gst-plugins-meta-1.0-r1:1.0 [0.10-r8:0.10] USE="alsa ffmpeg flac http mp3 mpeg ogg taglib vorbis x264 -X -a52 -aac -cdda -dts -dv -dvb -dvd -jack -lame -libass -libvisual -mms -opus -oss -pulseaudio -theora -v4l -vcd (-vpx) -wavpack" 
[ebuild  NS    ]  media-plugins/gst-plugins-flac-1.0.10:1.0 [0.10.31:0.10] 2,669 kB
[ebuild  NS    ]  media-plugins/gst-plugins-mad-1.0.10:1.0 [0.10.19:0.10] 811 kB
[ebuild  NS    ]  media-plugins/gst-plugins-mpeg2dec-1.0.10:1.0 [0.10.19:0.10] 0 kB
[ebuild  NS    ]  media-plugins/gst-plugins-x264-1.0.10:1.0 [0.10.19:0.10] 0 kB
[ebuild  NS    ]  media-plugins/gst-plugins-taglib-1.0.10:1.0 [0.10.31:0.10] 0 kB
[ebuild  NS    ]  media-plugins/gst-plugins-soup-1.0.10:1.0 [0.10.31:0.10] 0 kB
[ebuild  NS    ]  media-libs/gst-plugins-ugly-1.0.10:1.0 [0.10.19:0.10] USE="nls orc" 0 kB
[ebuild  NS    ]  media-libs/gst-plugins-good-1.0.10:1.0 [0.10.31:0.10] USE="nls orc" 0 kB
[nomerge       ] dev-python/pygobject-3.8.3:3 [2.28.6-r55:2] USE="cairo threads -examples {-test}" PYTHON_TARGETS="python2_7 python3_3 -python2_6 -python3_2" 
[ebuild  N     ]  gnome-base/gnome-common-3.7.4:3  149 kB
Comment 21 Manuel Ullmann 2014-02-19 19:06:55 UTC
I just noted, that quodlibet-2.6.3 did hit the portage tree. Does this version solve your issues (e.g. is old enough)? I don´t know, how stable it is. However the quodlibet developers did not update it for a long time.
If you have any issues, you should open another bug report. You could for example make a version bump request for 2.5.1, like the one for 3.0.2.
Comment 22 nopenope 2014-02-19 19:16:28 UTC
Yep, it is working fine. Now I have the 3 version masked.
Things seems stable here