"AttributeError: 'PigmentFrontend' object has no attribute 'dbus_frontend'" when exiting

Bug #330267 reported by Guillaume Desmottes
6
Affects Status Importance Assigned to Milestone
Moovida
Fix Released
Low
Philippe Normand

Bug Description

I have this error each time I exit Elisa (using the close button of the WM).

I'm using 0.5.28 on Ubuntu Jaunty.

<type 'exceptions.AttributeError'>
Python 2.5.2: /usr/bin/python
Mon Feb 16 21:11:23 2009

A problem occurred in a Python script. Here is the sequence of
function calls leading up to the error, in the order they occurred.

 /home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py in handle_input(self=<elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>, input_manager=<InputManager object at 0x8fbea54 (elisa+core+input_manager+InputManager at 0x8e3d680)>, input_event=<elisa.core.input_event.InputEvent instance at 0xa53308c>)
  549 def handle_input(self, input_manager, input_event):
  550 # forward it to the controller
  551 self.controller.handle_input(input_manager, input_event)
  552
  553 def _initialize_theme(self):
self = <elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>
self.controller = <PoblesecController object at 0xa0e070c (elisa+p...gment_controller+PigmentController at 0x8edfa00)>
self.controller.handle_input = <bound method PoblesecController.handle_input of...ment_controller+PigmentController at 0x8edfa00)>>
input_manager = <InputManager object at 0x8fbea54 (elisa+core+input_manager+InputManager at 0x8e3d680)>
input_event = <elisa.core.input_event.InputEvent instance at 0xa53308c>

 /home/cassidy/.elisa-0.5/plugins/elisa_plugin_poblesec-0.4.egg/elisa/plugins/poblesec/main.py in handle_input(self=<PoblesecController object at 0xa0e070c (elisa+p...gment_controller+PigmentController at 0x8edfa00)>, manager=<InputManager object at 0x8fbea54 (elisa+core+input_manager+InputManager at 0x8e3d680)>, input_event=<elisa.core.input_event.InputEvent instance at 0xa53308c>)
  750 return True
  751
  752 return super(PoblesecController, self).handle_input(manager, input_event)
  753
  754 def get_playable_model(self, file_path):
builtinsuper = <type 'super'>
global PoblesecController = <class 'elisa.plugins.poblesec.main.PoblesecController'>
self = <PoblesecController object at 0xa0e070c (elisa+p...gment_controller+PigmentController at 0x8edfa00)>
).handle_input = <bound method PoblesecController.handle_input of...ment_controller+PigmentController at 0x8edfa00)>>
manager = <InputManager object at 0x8fbea54 (elisa+core+input_manager+InputManager at 0x8e3d680)>
input_event = <elisa.core.input_event.InputEvent instance at 0xa53308c>

 /home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_controller.py in handle_input(self=<PoblesecController object at 0xa0e070c (elisa+p...gment_controller+PigmentController at 0x8edfa00)>, input_manager=<InputManager object at 0x8fbea54 (elisa+core+input_manager+InputManager at 0x8e3d680)>, input_event=<elisa.core.input_event.InputEvent instance at 0xa53308c>)
   77 def handle_input(self, input_manager, input_event):
   78 if input_event.value == EventValue.KEY_EXIT:
   79 common.application.stop()
   80 return True
   81 return False
global common = <module 'elisa.core.common' from '/home/cassidy/...5/plugins/elisa-0.5.28.egg/elisa/core/common.py'>
common.application = <elisa.core.application.Application object at 0x84f6a6c>
common.application.stop = <bound method Application.stop of <elisa.core.application.Application object at 0x84f6a6c>>

 /home/cassidy/.elisa-0.5/plugins/elisa-0.5.28.egg/elisa/core/application.py in stop(self=<elisa.core.application.Application object at 0x84f6a6c>, stop_reactor=True)
  511 # managers
  512 self.info("Stopping interface controller")
  513 dfr = self.interface_controller.stop()
  514 dfr.addCallback(interface_controller_stopped)
  515 return dfr
dfr undefined
self = <elisa.core.application.Application object at 0x84f6a6c>
self.interface_controller = <elisa.core.interface_controller.InterfaceController object at 0x8f9884c>
self.interface_controller.stop = <bound method InterfaceController.stop of <elisa...troller.InterfaceController object at 0x8f9884c>>

 /home/cassidy/.elisa-0.5/plugins/elisa-0.5.28.egg/elisa/core/interface_controller.py in stop(self=<elisa.core.interface_controller.InterfaceController object at 0x8f9884c>)
  139
  140 for frontend in self.frontends.values():
  141 dfr = frontend.clean()
  142 dfrs.append(dfr)
  143
dfr undefined
frontend = <elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>
frontend.clean = <bound method PigmentFrontend.clean of <elisa.pl...nt_frontend.PigmentFrontend object at 0x8df7e0c>>

 /home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py in clean(self=<elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>)
  662
  663 def clean(self):
  664 self._clean_dbus()
  665
  666 if self.controller:
self = <elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>
self._clean_dbus = <bound method PigmentFrontend._clean_dbus of <el...nt_frontend.PigmentFrontend object at 0x8df7e0c>>

 /home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py in _clean_dbus(self=<elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>)
  731
  732 bus = dbus.SessionBus()
  733 self.dbus_frontend.remove_from_connection(bus,
  734 '/com/fluendo/Elisa/Plugins/Pigment/Frontend')
  735 # BusName implements __del__, eew
self = <elisa.plugins.pigment.pigment_frontend.PigmentFrontend object at 0x8df7e0c>
self.dbus_frontend undefined
bus = <dbus._dbus.SessionBus (session) at 0x85a147c>
<type 'exceptions.AttributeError'>: 'PigmentFrontend' object has no attribute 'dbus_frontend'
    __class__ = <type 'exceptions.AttributeError'>
    __delattr__ = <method-wrapper '__delattr__' of exceptions.AttributeError object at 0xa6b2c2c>
    __dict__ = {}
    __doc__ = 'Attribute not found.'
    __getattribute__ = <method-wrapper '__getattribute__' of exceptions.AttributeError object at 0xa6b2c2c>
    __getitem__ = <method-wrapper '__getitem__' of exceptions.AttributeError object at 0xa6b2c2c>
    __getslice__ = <method-wrapper '__getslice__' of exceptions.AttributeError object at 0xa6b2c2c>
    __hash__ = <method-wrapper '__hash__' of exceptions.AttributeError object at 0xa6b2c2c>
    __init__ = <method-wrapper '__init__' of exceptions.AttributeError object at 0xa6b2c2c>
    __new__ = <built-in method __new__ of type object at 0x8146aa0>
    __reduce__ = <built-in method __reduce__ of exceptions.AttributeError object at 0xa6b2c2c>
    __reduce_ex__ = <built-in method __reduce_ex__ of exceptions.AttributeError object at 0xa6b2c2c>
    __repr__ = <method-wrapper '__repr__' of exceptions.AttributeError object at 0xa6b2c2c>
    __setattr__ = <method-wrapper '__setattr__' of exceptions.AttributeError object at 0xa6b2c2c>
    __setstate__ = <built-in method __setstate__ of exceptions.AttributeError object at 0xa6b2c2c>
    __str__ = <method-wrapper '__str__' of exceptions.AttributeError object at 0xa6b2c2c>
    args = ("'PigmentFrontend' object has no attribute 'dbus_frontend'",)
    message = "'PigmentFrontend' object has no attribute 'dbus_frontend'"

The above is a description of an error in a Python program. Here is
the original traceback:

Traceback (most recent call last):
  File "/home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py", line 551, in handle_input
    self.controller.handle_input(input_manager, input_event)
  File "/home/cassidy/.elisa-0.5/plugins/elisa_plugin_poblesec-0.4.egg/elisa/plugins/poblesec/main.py", line 752, in handle_input
    return super(PoblesecController, self).handle_input(manager, input_event)
  File "/home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_controller.py", line 79, in handle_input
    common.application.stop()
  File "/home/cassidy/.elisa-0.5/plugins/elisa-0.5.28.egg/elisa/core/application.py", line 513, in stop
    dfr = self.interface_controller.stop()
  File "/home/cassidy/.elisa-0.5/plugins/elisa-0.5.28.egg/elisa/core/interface_controller.py", line 141, in stop
    dfr = frontend.clean()
  File "/home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py", line 664, in clean
    self._clean_dbus()
  File "/home/cassidy/.elisa-0.5/plugins/elisa_plugin_pigment-0.4.egg/elisa/plugins/pigment/pigment_frontend.py", line 733, in _clean_dbus
    self.dbus_frontend.remove_from_connection(bus,
AttributeError: 'PigmentFrontend' object has no attribute 'dbus_frontend'

Revision history for this message
Paul van Tilburg (paulvt) wrote :

Confirmed! I was about to report this too.

Revision history for this message
Sudesh (sudeshc-deactivatedaccount) wrote :
Download full text (11.2 KiB)

On win32 log entry for this error:

Launcher core version: 0.5.27
Current core version: 0.5.28
c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\utils\classinit.py:34: UserWarning: ClassInitMeta class is deprecated
WARN MainThread plugin_registry Feb 17 11:03:13 plugin elisa-plugin-bluetooth has the following unmet dependencies: pybluez>=0.9.2 (elisa\core\plugin_registry.py:343)
WARN MainThread plugin_registry Feb 17 11:03:13 plugin elisa-plugin-coherence has the following unmet dependencies: coherence>=0.5.7 (elisa\core\plugin_registry.py:343)
c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\service_manager.py:27: DeprecationWarning: ServiceProvider.start is deprecated.
Traceback (most recent call last):
  File "C:\Program Files\Elisa\deps\lib\site-packages\twisted\internet\base.py", line 381, in iterate

  File "C:\Program Files\Elisa\deps\lib\site-packages\twisted\internet\base.py", line 561, in runUntilCurrent

  File "C:\oabuild\distribuable-dependencies\deps\Release\lib\site-packages\twisted\internet\task.py", line 236, in _tick

  File "c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\manager.py", line 101, in load_components_iter

--- <exception caught here> ---
  File "c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\plugin_registry.py", line 1048, in create_component

  File "C:\oabuild\distribuable-dependencies\deps\Release\lib\site-packages\twisted\python\reflect.py", line 357, in namedAny

  File "c:\users\sudeshc\.elisa-0.5\plugins\elisa_plugin_database-0.3.egg\elisa\plugins\database\dbus_service.py", line 19, in <module>

exceptions.ImportError: No module named dbus

WARN MainThread service_manager Feb 17 11:03:16 Creating elisa.plugins.database.dbus_service:DatabaseDBusServiceProvider failed. A full traceback can be found at c:\users\sudeshc\appdata\local\temp\elisa_av1-80.txt (elisa\core\manager.py:97)
WARN MainThread gst_metadata_slave_process_protocol Feb 17 11:03:19 Starting Slave-2 on tcp::49594 launching elisa.plugins.gstreamer.amp_slave.run_slave
(Slave-2 stdout) (elisa\plugins\amp\master.py:54)
WARN MainThread gst_metadata_slave_process_protocol Feb 17 11:03:22 c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\utils\classinit.py:34: UserWarning: ClassInitMeta class is deprecated

  warn("ClassInitMeta class is deprecated")

(Slave-2 stderr) (elisa\plugins\amp\master.py:57)
WARN MainThread gst_metadata_slave_process_protocol Feb 17 11:03:23 Starting Slave-5 on tcp::49598 launching elisa.plugins.gstreamer.amp_slave.run_slave
(Slave-5 stdout) (elisa\plugins\amp\master.py:54)
WARN MainThread gst_metadata_slave_process_protocol Feb 17 11:03:26 c:\users\sudeshc\.elisa-0.5\plugins\elisa-0.5.28.egg\elisa\core\utils\classinit.py:34: UserWarning: ClassInitMeta class is deprecated

  warn("ClassInitMeta class is deprecated")

(Slave-5 stderr) (elisa\plugins\amp\master.py:57)
==> at https://login.yahoo.com/config/login?.src=flickr&.pc=5134&.scrumb=0&.pd=c%3DE0.GahOp2e4MjkX.5l2HgAoLkpmyPvccpVM-&.intl=us&.done=https%3A%2F%2Flogin.yahoo.com%2Fconfig%...

Revision history for this message
Guillaume Emont (guijemont) wrote :

You put the finger on a non trivial bug. The way we do clean up for now is a bit of a mess, and quite incomplete, which triggers that bug: we clean the front-end without waiting for some deferreds that need it. These are most likely leaked deferred hidden in the code, that could be due to some architectural issues. I think it is quite a big task to tackle, and we might not fix it for a while since it does not seem to have any functional consequences, which is why I set the Importance to Low. Please correct me if you do have functionnal issues triggered by that.

Changed in elisa:
importance: Undecided → Low
status: New → Confirmed
Changed in elisa:
status: Confirmed → Triaged
Revision history for this message
Philippe Normand (philn) wrote :

After quick investigation, the delete-event of the viewport triggers the same code patch, twice. From pigment_input and pigment_frontend. Removing the one in pigment_input fixes the problem.

Changed in elisa:
assignee: nobody → philn
milestone: none → 0.5.29
status: Triaged → In Progress
Revision history for this message
yippi (brian-cameron) wrote :

This bug is also happening using Elisa 0.5.28 on Solaris. No matter how you quit Elisa (by clicking in the "X" button in elisa itself, or when running in a metacity window and clicking the close button. It seems impossible to exit elisa without seeing this crash on Solaris.

Philippe Normand (philn)
Changed in elisa:
status: In Progress → Fix Committed
Changed in elisa:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.