Ticket #331 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

Umit Crash - '[Errno 13] Permission denied: '/usr/share/umit/config/umit.conf''

Reported by: womail@… Owned by: luis
Priority: medium Milestone: Umit 1.0beta2
Component: CrashReport Version: current svn
Keywords: user crash Cc:

Description (last modified by luis) (diff)

Crash Report
==========

sys.platform linux2
os.name posix
Gtk version 2.16.1
Umit version 1.0beta2

Description


Versions:
---
GTK: 2.16.1
PyGTK: 2.16.1
HIGWidgets: 1.0beta1
Python: 2.6.2 (release26-maint, Apr 19 2009, 01:56:41) 
[GCC 4.3.3]
Nmap: Nmap version 4.76 ( http://nmap.org )
Operating System: Linux willie-desktop 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC 2009 i686
Umit: 1.0beta2
UmitCore: 1.0beta2
UmitGUI: 1.0beta2
---
<type 'exceptions.IOError'>
Python 2.6.2: /usr/bin/python
Mon Jun  1 19:52:25 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.

 /usr/bin/umit in <module>()
  210     except KeyboardInterrupt:
  211         sys.exit(signal.SIGINT)
  212 
  213 if __name__ == "__main__":
  214     main(sys.argv)
main = <function main at 0xb7df0ed4>
sys = <module 'sys' (built-in)>
sys.argv = ['/usr/bin/umit']

 /usr/bin/umit in main(args=['/usr/bin/umit'])
  199     from umit.gui.App import App
  200 
  201     umit_app = App()
  202 
  203     if os.name == "posix":
umit_app undefined
App = <class umit.gui.App.App at 0x9c4c83c>

 /usr/share/umit/umit/gui/App.py in __init__(self=<umit.gui.App.App instance at 0x9f72e2c>, args=['/usr/bin/umit'])
   48     def __init__(self, args=sys.argv):
   49         # Initialite the PluginEngine
   50         PluginEngine()
   51 
   52     def __parse_cmd_line(self):
global PluginEngine = <class 'umit.plugin.Engine.PluginEngine'>

 /usr/share/umit/umit/plugin/Engine.py in __init__(self=<umit.plugin.Engine.PluginEngine object at 0x9f72e4c>)
  128 
  129         # Initialize our objects
  130         self.plugins = Plugins()
  131         self.tree = PluginsTree()
  132         self.core = Core()
self = <umit.plugin.Engine.PluginEngine object at 0x9f72e4c>
self.plugins undefined
global Plugins = <class 'umit.core.UmitConf.Plugins'>

 /usr/share/umit/umit/core/UmitConf.py in __init__(self=<umit.core.UmitConf.Plugins object at 0x9f72e6c>)
  541 
  542         if not self.parser.has_section(self.section_name):
  543             self.create_section()
  544 
  545     def save_changes(self):
self = <umit.core.UmitConf.Plugins object at 0x9f72e6c>
self.create_section = <bound method Plugins.create_section of <umit.core.UmitConf.Plugins object at 0x9f72e6c>>

 /usr/share/umit/umit/core/UmitConf.py in create_section(self=<umit.core.UmitConf.Plugins object at 0x9f72e6c>)
  548     def create_section(self):
  549         from os.path import join
  550         self.paths = [join(Path.config_dir, "plugins")]
  551         self.plugins = ""
  552 
self = <umit.core.UmitConf.Plugins object at 0x9f72e6c>
self.paths = ['/usr/share/umit/config/plugins']
join = <function join at 0xb7ed1aac>
global Path = <umit.core.Paths.Paths object at 0x9c4b64c>
Path.config_dir = '/usr/share/umit/config'

 /usr/share/umit/umit/core/UmitConf.py in set_paths(self=<umit.core.UmitConf.Plugins object at 0x9f72e6c>, settings=['/usr/share/umit/config/plugins'])
  576 
  577     def set_paths(self, settings):
  578         self.__set_it("paths", self.separator.join(settings))
  579 
  580     def get_plugins(self):
self = <umit.core.UmitConf.Plugins object at 0x9f72e6c>
self.__set_it undefined
self.separator = ':'
self.separator.join = <built-in method join of str object at 0xb7eb8520>
settings = ['/usr/share/umit/config/plugins']

 /usr/share/umit/umit/core/UmitConf.py in __set_it(self=<umit.core.UmitConf.Plugins object at 0x9f72e6c>, property_name='paths', settings='/usr/share/umit/config/plugins')
  564     def __set_it(self, property_name, settings):
  565         settings = self.sanity_settings(settings)
  566         self.parser.set(self.section_name, property_name, settings)
  567 
  568     def sanity_settings(self, settings):
self = <umit.core.UmitConf.Plugins object at 0x9f72e6c>
self.parser = <umit.core.UmitConfigParser.UmitConfigParser instance at 0x9c4b3ec>
self.parser.set = <bound method UmitConfigParser.set of <umit.core...igParser.UmitConfigParser instance at 0x9c4b3ec>>
self.section_name = 'plugins'
property_name = 'paths'
settings = '/usr/share/umit/config/plugins'

 /usr/share/umit/umit/core/UmitConfigParser.py in set(self=<umit.core.UmitConfigParser.UmitConfigParser instance at 0x9c4b3ec>, section='plugins', option='paths', value='/usr/share/umit/config/plugins')
   38 
   39         ConfigParser.set(self, section, option, value)
   40         self.save_changes()
   41 
   42     def read(self, filename):
self = <umit.core.UmitConfigParser.UmitConfigParser instance at 0x9c4b3ec>
self.save_changes = <bound method UmitConfigParser.save_changes of <...igParser.UmitConfigParser instance at 0x9c4b3ec>>

 /usr/share/umit/umit/core/UmitConfigParser.py in save_changes(self=<umit.core.UmitConfigParser.UmitConfigParser instance at 0x9c4b3ec>)
   60             else:
   61                 raise Exception("Wrong filename %s" % self.filenames)
   62             self.write(open(filename, 'w'))
   63         elif self.fp:
   64             self.write(self.fp)
self = <umit.core.UmitConfigParser.UmitConfigParser instance at 0x9c4b3ec>
self.write = <bound method UmitConfigParser.write of <umit.co...igParser.UmitConfigParser instance at 0x9c4b3ec>>
builtinopen = <built-in function open>
filename = '/usr/share/umit/config/umit.conf'
<type 'exceptions.IOError'>: [Errno 13] Permission denied: '/usr/share/umit/config/umit.conf'
    __class__ = <type 'exceptions.IOError'>
    __delattr__ = <method-wrapper '__delattr__' of exceptions.IOError object at 0x9f6d74c>
    __dict__ = {}
    __doc__ = 'I/O operation failed.'
    __format__ = <built-in method __format__ of exceptions.IOError object at 0x9f6d74c>
    __getattribute__ = <method-wrapper '__getattribute__' of exceptions.IOError object at 0x9f6d74c>
    __getitem__ = <method-wrapper '__getitem__' of exceptions.IOError object at 0x9f6d74c>
    __getslice__ = <method-wrapper '__getslice__' of exceptions.IOError object at 0x9f6d74c>
    __hash__ = <method-wrapper '__hash__' of exceptions.IOError object at 0x9f6d74c>
    __init__ = <method-wrapper '__init__' of exceptions.IOError object at 0x9f6d74c>
    __new__ = <built-in method __new__ of type object at 0x82275a0>
    __reduce__ = <built-in method __reduce__ of exceptions.IOError object at 0x9f6d74c>
    __reduce_ex__ = <built-in method __reduce_ex__ of exceptions.IOError object at 0x9f6d74c>
    __repr__ = <method-wrapper '__repr__' of exceptions.IOError object at 0x9f6d74c>
    __setattr__ = <method-wrapper '__setattr__' of exceptions.IOError object at 0x9f6d74c>
    __setstate__ = <built-in method __setstate__ of exceptions.IOError object at 0x9f6d74c>
    __sizeof__ = <built-in method __sizeof__ of exceptions.IOError object at 0x9f6d74c>
    __str__ = <method-wrapper '__str__' of exceptions.IOError object at 0x9f6d74c>
    __subclasshook__ = <built-in method __subclasshook__ of type object at 0x82275a0>
    __unicode__ = <built-in method __unicode__ of exceptions.IOError object at 0x9f6d74c>
    args = (13, 'Permission denied')
    errno = 13
    filename = '/usr/share/umit/config/umit.conf'
    message = ''
    strerror = 'Permission denied'

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

Traceback (most recent call last):
  File "/usr/bin/umit", line 214, in <module>
    main(sys.argv)
  File "/usr/bin/umit", line 201, in main
    umit_app = App()
  File "/usr/share/umit/umit/gui/App.py", line 50, in __init__
    PluginEngine()
  File "/usr/share/umit/umit/plugin/Engine.py", line 130, in __init__
    self.plugins = Plugins()
  File "/usr/share/umit/umit/core/UmitConf.py", line 543, in __init__
    self.create_section()
  File "/usr/share/umit/umit/core/UmitConf.py", line 550, in create_section
    self.paths = [join(Path.config_dir, "plugins")]
  File "/usr/share/umit/umit/core/UmitConf.py", line 578, in set_paths
    self.__set_it("paths", self.separator.join(settings))
  File "/usr/share/umit/umit/core/UmitConf.py", line 566, in __set_it
    self.parser.set(self.section_name, property_name, settings)
  File "/usr/share/umit/umit/core/UmitConfigParser.py", line 40, in set
    self.save_changes()
  File "/usr/share/umit/umit/core/UmitConfigParser.py", line 62, in save_changes
    self.write(open(filename, 'w'))
IOError: [Errno 13] Permission denied: '/usr/share/umit/config/umit.conf'


Attachments

331.patch (3.9 kB) - added by luis 4 years ago.
331_2.patch (1.3 kB) - added by luis 4 years ago.
removed trash

Change History

  Changed 4 years ago by luis

  • owner changed from boltrix to luis
  • description modified (diff)

Changed 4 years ago by luis

follow-up: ↓ 3   Changed 4 years ago by luis

The patch attached is not a workaround. It is kind of error that we can't avoid.

How to reproduce: - Install umit - Run umit as: sudo umit ( then it will create $HOME/.umit ) - Close Umit - Now run umit again as normal user

The patch avoid this traceback, when don't have permission to read/write in configs it doesn't allow run umit because it doesn't make sense.

in reply to: ↑ 2   Changed 4 years ago by luis

Replying to luis:

(formatted now)

The patch attached is not a workaround. It is kind of error that we can't avoid.

How to reproduce:

- Install umit

- Run umit as: sudo umit ( then it will create $HOME/.umit )

- Close Umit

- Now run umit again as normal user

The patch avoid this traceback, when don't have permission to read/write in configs it doesn't allow run umit because it doesn't make sense.

Changed 4 years ago by luis

removed trash

  Changed 4 years ago by ignotus

It works good for me Luis, go ahead!

  Changed 4 years ago by luis

Fixed r4931

  Changed 4 years ago by luis

  • status changed from new to closed
  • resolution set to fixed
Note: See TracTickets for help on using tickets.