/usr/share/pyshared/gnomeosd/gtkexcepthook.py is in gnome-osd 0.12.2-1.1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | import pygtk; pygtk.require("2.0")
import sys
import gtk, pango
from gettext import gettext as _
from cStringIO import *
import traceback
_exception_in_progress = 0
def _info(type, value, tb):
global _exception_in_progress
if _exception_in_progress:
# Exceptions have piled up, so we use the default exception
# handler for such exceptions
_excepthook_save(type, value, tb)
return
_exception_in_progress = 1
dialog = gtk.MessageDialog(parent=None,
flags=0,
type=gtk.MESSAGE_WARNING,
buttons=gtk.BUTTONS_CLOSE,
message_format=_("A programming error has been detected"))
dialog.format_secondary_text(_("It probably isn't fatal, but should be reported"
" to the developers nonetheless."))
dialog.set_title(_("Bug Detected"))
dialog.set_default_response(gtk.RESPONSE_CLOSE)
#dialog.set_border_width(12)
#dialog.vbox.get_children()[0].set_spacing(12)
# Details
textview = gtk.TextView(); textview.show()
textview.set_editable(False)
textview.modify_font(pango.FontDescription("Monospace"))
sw = gtk.ScrolledWindow(); sw.show()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
sw.add(textview)
frame = gtk.Frame();
frame.set_shadow_type(gtk.SHADOW_IN)
frame.add(sw)
frame.set_border_width(6)
textbuffer = textview.get_buffer()
trace = StringIO()
traceback.print_exception(type, value, tb, None, trace)
textbuffer.set_text(trace.getvalue())
textview.set_size_request(gtk.gdk.screen_width()/2, gtk.gdk.screen_height()/3)
frame.show()
expander = gtk.Expander("Details")
expander.add(frame)
expander.show()
dialog.vbox.add(expander)
dialog.set_position(gtk.WIN_POS_CENTER)
dialog.set_gravity(gtk.gdk.GRAVITY_CENTER)
dialog.run()
dialog.destroy()
_exception_in_progress = 0
if not sys.stderr.isatty():
_excepthook_save = sys.excepthook
sys.excepthook = _info
if __name__ == '__main__':
_excepthook_save = sys.excepthook
sys.excepthook = _info
print x + 1
|