Hi, Could you test the patch attached on screenlets and see if the bug still appear ? Thanks.
Regards, Julien Lavergne Le mardi 31 mars 2009 à 22:00 -0700, John Gruenenfelder a écrit : > On Tue, Mar 31, 2009 at 09:12:38AM +0200, Julien Lavergne wrote: > >Le lundi 30 mars 2009 à 19:56 -0700, John Gruenenfelder a écrit : > >> None of these steps helped and all seem to have the same outcome: > >> > >> $ python .screenlets/ClockRingMod/ClockRingModScreenlet.py > >> Segmentation fault > >> $ python /usr/share/screenlets/Clock/ClockScreenlet.py > >> Segmentation fault > >> $ python /usr/share/screenlets/AppMenu/AppMenuScreenlet.py > >> Segmentation fault > >> > >> And after moving my old screnlets config directories out of the way: > >> > >> $ screenlets-manager > >> Segmentation fault > >> > >> How might I make these commands print more useful information, such as > >> where > >> the segfault is occuring or possibly having python print out a stacktrace > >> rather than simply aborting? > >> > > > >You can obtain a stacktrace by following the instructions of this > >pages : http://wiki.python.org/moin/DebuggingWithGdb . Note that you'll > >need to install some -dbg packages of different python packages (such as > >python-cairo-dbg). > > Okay, I've installed some of the debug packages and now have backtraces for > two > of the screenlets. I've attached the log files containing the gdb output. > >
diff -Nur screenlets-0.1.2/src/lib/backend.py screenlets-0.1.2-new/src/lib/backend.py --- screenlets-0.1.2/src/lib/backend.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/backend.py 2009-04-10 17:22:33.000000000 +0200 @@ -33,7 +33,7 @@ print _("GConf python module not found. GConf settings backend is disabled.") -class ScreenletsBackend: +class ScreenletsBackend(object): """The backend performs the loading/saving of the 'key=value'-strings. Extend this superclass to implement different saving-backends.""" diff -Nur screenlets-0.1.2/src/lib/drawing.py screenlets-0.1.2-new/src/lib/drawing.py --- screenlets-0.1.2/src/lib/drawing.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/drawing.py 2009-04-10 17:05:49.000000000 +0200 @@ -10,7 +10,7 @@ import gtk, cairo, pango, math -class Drawing: +class Drawing(object): """Contains static drawing functions.""" # ---------------------------------------------------------------------- diff -Nur screenlets-0.1.2/src/lib/__init__.py screenlets-0.1.2-new/src/lib/__init__.py --- screenlets-0.1.2/src/lib/__init__.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/__init__.py 2009-04-10 17:05:17.000000000 +0200 @@ -135,7 +135,7 @@ # CLASSES #------------------------------------------------------------------------------- -class DefaultMenuItem: +class DefaultMenuItem(object): """A container with constants for the default menuitems""" # default menuitem constants (is it right to increase like this?) @@ -2081,7 +2081,7 @@ del ctx return False -class Tooltip: +class Tooltip(object): """A window that displays a text and serves as Tooltip (very basic yet).""" # internals @@ -2194,7 +2194,7 @@ ctx.set_source_rgba(0, 0, 0, 0.7) ctx.stroke() -class Notify: +class Notify(object): """A window that displays a text and serves as Notification (very basic yet).""" # internals diff -Nur screenlets-0.1.2/src/lib/install.py screenlets-0.1.2-new/src/lib/install.py --- screenlets-0.1.2/src/lib/install.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/install.py 2009-04-10 17:20:59.000000000 +0200 @@ -33,7 +33,7 @@ DIR_USER = screenlets.DIR_USER DIR_AUTOSTART = utils.get_autostart_dir() -class ScreenletInstaller: +class ScreenletInstaller(object): """A simple utility to install screenlets into the current user's directory (so either into $HOME/.screenlets/ for normal users or, if run as root, into screenlets.INSTALL_PREFIX/share/screenlets/).""" diff -Nur screenlets-0.1.2/src/lib/menu.py screenlets-0.1.2-new/src/lib/menu.py --- screenlets-0.1.2/src/lib/menu.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/menu.py 2009-04-10 17:20:33.000000000 +0200 @@ -216,7 +216,7 @@ # Classes #----------------------------------------------- -class ApplicationMenu: +class ApplicationMenu(object): """A utility-class to simplify the creation of gtk.Menus from directories with desktop-files. Reads all files in one or multiple directories into its internal list and offers an easy way to create entire categories as complete gtk.Menu @@ -287,7 +287,7 @@ # return menu return menu -class DefaultMenuItem: +class DefaultMenuItem(object): """A container with constants for the default menuitems""" # default menuitem constants (is it right to increase like this?) diff -Nur screenlets-0.1.2/src/lib/options.py screenlets-0.1.2-new/src/lib/options.py --- screenlets-0.1.2/src/lib/options.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/options.py 2009-04-10 17:23:59.000000000 +0200 @@ -371,7 +371,7 @@ return None -class EditableOptions: +class EditableOptions(object): """The EditableOptions can be inherited from to allow objects to export editable options for editing them with the OptionsEditor-class. NOTE: This could use some improvement and is very poorly coded :) ...""" diff -Nur screenlets-0.1.2/src/lib/plugins/AmazonCoverArtSearch.py screenlets-0.1.2-new/src/lib/plugins/AmazonCoverArtSearch.py --- screenlets-0.1.2/src/lib/plugins/AmazonCoverArtSearch.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/AmazonCoverArtSearch.py 2009-04-10 17:18:50.000000000 +0200 @@ -26,7 +26,7 @@ ASSOCIATE = "webservices-20" -class Bag: pass +class Bag(object): pass class AmazonCoverArtSearch (object): def __init__ (self, loader): diff -Nur screenlets-0.1.2/src/lib/plugins/Convert.py screenlets-0.1.2-new/src/lib/plugins/Convert.py --- screenlets-0.1.2/src/lib/plugins/Convert.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Convert.py 2009-04-10 17:16:21.000000000 +0200 @@ -3,7 +3,7 @@ # file BaseConverter.py. But first, please, read below if a RatioConverter isn't # well suitable for your desired task. -class Converter: +class Converter(object): """The base class for the converters. The converters look after maintaining the list of currently shown values - initialising, accepting keyboard input, etc..""" diff -Nur screenlets-0.1.2/src/lib/plugins/Flickr.py screenlets-0.1.2-new/src/lib/plugins/Flickr.py --- screenlets-0.1.2/src/lib/plugins/Flickr.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Flickr.py 2009-04-10 17:15:47.000000000 +0200 @@ -11,7 +11,7 @@ from urllib import urlopen import Proxy -class Flickr: +class Flickr(object): url_list = {} diff -Nur screenlets-0.1.2/src/lib/plugins/GenericPlayer.py screenlets-0.1.2-new/src/lib/plugins/GenericPlayer.py --- screenlets-0.1.2/src/lib/plugins/GenericPlayer.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/GenericPlayer.py 2009-04-10 17:17:47.000000000 +0200 @@ -9,7 +9,7 @@ # A Generic API to a Music Player by vrunner # All Players must extend this class -class GenericAPI: +class GenericAPI(object): __name__ = 'GenericAPI' __version__ = '0.0' __author__ = 'vrunner' diff -Nur screenlets-0.1.2/src/lib/plugins/Gstreamer.py screenlets-0.1.2-new/src/lib/plugins/Gstreamer.py --- screenlets-0.1.2/src/lib/plugins/Gstreamer.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Gstreamer.py 2009-04-10 17:19:13.000000000 +0200 @@ -3,7 +3,7 @@ pygst.require("0.10") import gst -class gstreamer: +class gstreamer(object): def __init__(self): self.player = gst.element_factory_make("playbin", "player") diff -Nur screenlets-0.1.2/src/lib/plugins/iCal.py screenlets-0.1.2-new/src/lib/plugins/iCal.py --- screenlets-0.1.2/src/lib/plugins/iCal.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/iCal.py 2009-04-10 17:14:58.000000000 +0200 @@ -45,7 +45,7 @@ import datetime import time -class ICalReader: +class ICalReader(object): def __init__(self, dataLines = None): ''' iCal.ICalReader([dataList]) @@ -215,7 +215,7 @@ hour = 0 minute = 0 -class ICalEvent: +class ICalEvent(object): def __init__(self): self.exceptionDates = [] self.dateSet = None @@ -260,10 +260,10 @@ def startTime(self): return self.startDate -#class ICalTodo: +#class ICalTodo(object): #strange... -#class DateParser: +#class DateParser(object): def parse(dateStr): year = int(dateStr[0:4]) if year < 1970: @@ -280,7 +280,7 @@ return datetime.datetime(year, month, day, hour, minute) -class DateSet: +class DateSet(object): def __init__(self, startDate, endDate, rule): self.startDate = startDate self.endDate = endDate diff -Nur screenlets-0.1.2/src/lib/plugins/keyring.py screenlets-0.1.2-new/src/lib/plugins/keyring.py --- screenlets-0.1.2/src/lib/plugins/keyring.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/keyring.py 2009-04-10 17:06:19.000000000 +0200 @@ -7,7 +7,7 @@ # pavpanchekha -class KeyRing: +class KeyRing(object): def __init__(self): import keyring self.keyring = keyring diff -Nur screenlets-0.1.2/src/lib/plugins/Mail.py screenlets-0.1.2-new/src/lib/plugins/Mail.py --- screenlets-0.1.2/src/lib/plugins/Mail.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Mail.py 2009-04-10 17:17:18.000000000 +0200 @@ -84,14 +84,14 @@ may block connections for a certain interval before allowing reconnects.""" # the current operational status of the mailcheck -class MailboxStatus: +class MailboxStatus(object): UNKNOWN = 0 ALL_READ = 1 UNREAD_MAIL = 2 NEW_MAIL = 3 # the mailcheck status -class MailCheckStatus: +class MailCheckStatus(object): REFRESH = 1 IDLE = 2 ERROR = 3 @@ -210,7 +210,7 @@ self.thread.join() self.thread = None -class Mailer: +class Mailer(object): """ Class that retrieve the information from an Imap, Pop or mbox account diff -Nur screenlets-0.1.2/src/lib/plugins/Mplayer.py screenlets-0.1.2-new/src/lib/plugins/Mplayer.py --- screenlets-0.1.2/src/lib/plugins/Mplayer.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Mplayer.py 2009-04-10 17:19:51.000000000 +0200 @@ -15,7 +15,7 @@ # # Provides simple piped I/O to an mplayer process. # -class Mplayer: +class Mplayer(object): pymp, mplayerIn, mplayerOut = None, None, None inputHandler, eofHandler, statusQuery = 0, 0, 0 diff -Nur screenlets-0.1.2/src/lib/plugins/Proxy.py screenlets-0.1.2-new/src/lib/plugins/Proxy.py --- screenlets-0.1.2/src/lib/plugins/Proxy.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/plugins/Proxy.py 2009-04-10 17:13:57.000000000 +0200 @@ -10,7 +10,7 @@ import gconf -class Proxy: +class Proxy(object): def __init__(self): try: diff -Nur screenlets-0.1.2/src/lib/utils.py screenlets-0.1.2-new/src/lib/utils.py --- screenlets-0.1.2/src/lib/utils.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/lib/utils.py 2009-04-10 17:22:03.000000000 +0200 @@ -544,7 +544,7 @@ # CLASSES # ------------------------------------------------------------------------------ -class ScreenletInfo: +class ScreenletInfo(object): """A container with info about a screenlet.""" def __init__ (self, name, lname, info, author, version, icon): @@ -632,7 +632,7 @@ return False -class IniReader: +class IniReader(object): """A simple config/ini-reader class. This is only used for reading the theme.conf files yet, thus it only uses string-values. TODO: add writing-functions and let backend use this, too""" @@ -709,7 +709,7 @@ -class Notifier: +class Notifier(object): """A simple and conveniet wrapper for the notification-service. Allows screenlets to easily pop up notes with their own icon (if any).""" diff -Nur screenlets-0.1.2/src/share/examples/empty-test-window.py screenlets-0.1.2-new/src/share/examples/empty-test-window.py --- screenlets-0.1.2/src/share/examples/empty-test-window.py 2008-06-04 14:31:25.000000000 +0200 +++ screenlets-0.1.2-new/src/share/examples/empty-test-window.py 2009-04-10 16:51:57.000000000 +0200 @@ -19,7 +19,7 @@ # testing app class -class TestApp: +class TestApp(object): def __init__ (self): self.win = gtk.Window() diff -Nur screenlets-0.1.2/src/share/screenlets/ClearRss/feedparser.py screenlets-0.1.2-new/src/share/screenlets/ClearRss/feedparser.py --- screenlets-0.1.2/src/share/screenlets/ClearRss/feedparser.py 2008-06-04 14:31:26.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets/ClearRss/feedparser.py 2009-04-10 16:56:33.000000000 +0200 @@ -284,7 +284,7 @@ uri = _urifixer.sub(r'\1\3', uri) return urlparse.urljoin(base, uri) -class _FeedParserMixin: +class _FeedParserMixin(object): namespaces = {'': '', 'http://backend.userland.com/rss': '', 'http://blogs.law.harvard.edu/tech/rss': '', diff -Nur screenlets-0.1.2/src/share/screenlets/CopyStack/CopyStackScreenlet.py screenlets-0.1.2-new/src/share/screenlets/CopyStack/CopyStackScreenlet.py --- screenlets-0.1.2/src/share/screenlets/CopyStack/CopyStackScreenlet.py 2008-06-04 14:31:26.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets/CopyStack/CopyStackScreenlet.py 2009-04-10 16:55:11.000000000 +0200 @@ -383,7 +383,7 @@ # TODO: put in screenlets.ui -class Tooltip: +class Tooltip(object): """A window that displays a text and serves as Tooltip (very basic yet).""" # internals @@ -490,7 +490,7 @@ ctx.stroke() -class Element: +class Element(object): """Abstract superclass for an element on the stack.""" def __init__ (self, desc, data): diff -Nur screenlets-0.1.2/src/share/screenlets/FeedReader/feedparser.py screenlets-0.1.2-new/src/share/screenlets/FeedReader/feedparser.py --- screenlets-0.1.2/src/share/screenlets/FeedReader/feedparser.py 2008-06-04 14:31:26.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets/FeedReader/feedparser.py 2009-04-10 17:03:20.000000000 +0200 @@ -284,7 +284,7 @@ uri = _urifixer.sub(r'\1\3', uri) return urlparse.urljoin(base, uri) -class _FeedParserMixin: +class _FeedParserMixin(object): namespaces = {'': '', 'http://backend.userland.com/rss': '', 'http://blogs.law.harvard.edu/tech/rss': '', diff -Nur screenlets-0.1.2/src/share/screenlets/MainMenu/menus.py screenlets-0.1.2-new/src/share/screenlets/MainMenu/menus.py --- screenlets-0.1.2/src/share/screenlets/MainMenu/menus.py 2008-06-04 14:31:27.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets/MainMenu/menus.py 2009-04-10 17:01:37.000000000 +0200 @@ -7,7 +7,7 @@ from gtk import gdk import string import gmenu -class MenuDateStore: +class MenuDateStore(object): MENUCORE = gmenu.lookup_tree('applications.menu') MENUROOT = MENUCORE.get_root_directory() SYSTEMMENUCORE = gmenu.lookup_tree('settings.menu') diff -Nur screenlets-0.1.2/src/share/screenlets/NowPlaying/UI/Theme.py screenlets-0.1.2-new/src/share/screenlets/NowPlaying/UI/Theme.py --- screenlets-0.1.2/src/share/screenlets/NowPlaying/UI/Theme.py 2008-06-04 14:31:27.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets/NowPlaying/UI/Theme.py 2009-04-10 17:00:34.000000000 +0200 @@ -9,7 +9,7 @@ # The Main Skin Class # It parses the xml and creates various UI items -class Skin: +class Skin(object): items = [] width = 500 height = 200 @@ -110,7 +110,7 @@ # A Generic UI Item -class GenericItem: +class GenericItem(object): type = "" x = 0 y = 0 @@ -407,7 +407,7 @@ ctx.paint() -class PlayerControls: +class PlayerControls(object): type = "playercontrols" box = False diff -Nur screenlets-0.1.2/src/share/screenlets-manager/screenlets-manager.py screenlets-0.1.2-new/src/share/screenlets-manager/screenlets-manager.py --- screenlets-0.1.2/src/share/screenlets-manager/screenlets-manager.py 2008-06-04 14:31:27.000000000 +0200 +++ screenlets-0.1.2-new/src/share/screenlets-manager/screenlets-manager.py 2009-04-10 16:53:40.000000000 +0200 @@ -78,7 +78,7 @@ # /TEST -class ScreenletsManager: +class ScreenletsManager(object): """The main application class.""" daemon_iface = None