IOError: [Errno 13] Permission denied: '/vhosts/issues.fresco.org/issues/db/lock'
Python 2.3.5
/usr/bin/python

A problem occurred while running a Python script. Here is the sequence of function calls leading up to the error, with the most recent (innermost) call first. The exception attributes are:
      __doc__ = 'I/O operation failed.'
      __getitem__ = <bound method IOError.__getitem__ of <exceptions.IOError instance>>
      __init__ = <bound method IOError.__init__ of <exceptions.IOError instance>>
      __module__ = 'exceptions'
      __str__ = <bound method IOError.__str__ of <exceptions.IOError instance>>
      args = (13, 'Permission denied')
      errno = 13
      filename = '/vhosts/issues.fresco.org/issues/db/lock'
      strerror = 'Permission denied'

/group/synopsis/local/lib/python2.3/site-packages/roundup/backends/locking.py in acquire_lock(path='/vhosts/issues.fresco.org/issues/db/lock', block=1)
   35     '''
   36     import portalocker
   37     file = open(path, 'w')
      file = undefined, global open = undefined, path = '/vhosts/issues.fresco.org/issues/db/lock'
   38     if block:
   39         portalocker.lock(file, portalocker.LOCK_EX)

/group/synopsis/local/lib/python2.3/site-packages/roundup/backends/back_anydbm.py in __init__(self=<back_anydbm instance at 405dcdac>, config=<module '_roundup_tracker_1.config' from '/vhosts/issues.fresco.org/issues/config.pyc'>, journaltag='admin')
   88         # lock it
   89         lockfilenm = os.path.join(self.dir, 'lock')
   90         self.lockfile = locking.acquire_lock(lockfilenm)
      self = <back_anydbm instance at 405dcdac>, global lockfile = undefined, global locking = <module 'roundup.backends.locking' from '/group/...n2.3/site-packages/roundup/backends/locking.pyc'>, global acquire_lock = undefined, lockfilenm = '/vhosts/issues.fresco.org/issues/db/lock'
   91         self.lockfile.write(str(os.getpid()))
   92         self.lockfile.flush()

/vhosts/issues.fresco.org/issues/dbinit.py in open(name='admin')
   29 
   30     # open the database
   31     db = Database(config, name)
      db = undefined, global Database = <class roundup.backends.back_anydbm.Database>, global config = <module '_roundup_tracker_1.config' from '/vhosts/issues.fresco.org/issues/config.pyc'>, name = 'admin'
   32 
   33     #

/group/synopsis/local/lib/python2.3/site-packages/roundup/cgi/client.py in opendb(self=<_roundup_tracker_1.interfaces.Client instance>, user='admin')
  675             if hasattr(self, 'db'):
  676                 self.db.close()
  677             self.db = self.instance.open(user)
      self = <_roundup_tracker_1.interfaces.Client instance>, global db = undefined, global instance = undefined, global open = undefined, user = 'admin'
  678 
  679     def standard_message(self, to, subject, body, author=None):

/group/synopsis/local/lib/python2.3/site-packages/roundup/cgi/client.py in determine_context(self=<_roundup_tracker_1.interfaces.Client instance>, dre=<_sre.SRE_Pattern object>)
  405 
  406         # we need the db for further context stuff - open it as admin
  407         self.opendb('admin')
      self = <_roundup_tracker_1.interfaces.Client instance>, global opendb = undefined
  408 
  409         # see if we got a designator

/group/synopsis/local/lib/python2.3/site-packages/roundup/cgi/client.py in inner_main(self=<_roundup_tracker_1.interfaces.Client instance>)
  192             # Note: this method opens the database as "admin" in order to
  193             # perform context checks
  194             self.determine_context()
      self = <_roundup_tracker_1.interfaces.Client instance>, global determine_context = undefined
  195 
  196             # make sure we're identified (even anonymously)