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