error: unpack requires a string argument of length 8

Bug #1091716 reported by Thierry Florac on 2012-12-18
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
ZODB Browser
Critical
Unassigned

Bug Description

I tried the last ZODBBrowser release (0.10.3) on a ZODB-3.10.5 database (using Python 2.6).
When trying to display any object contents, I get the following error :

URL: /var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/templates/zodbinfo.pt
File '/var/local/eggs/Paste-1.7.5.1-py2.7.egg/paste/evalexception/middleware.py', line 306 in respond
  app_iter = self.application(environ, detect_start_response)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/dec.py', line 132 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/dec.py', line 197 in call_func
  return self.func(req, *args, **kwargs)
File '/var/local/eggs/fanstatic-0.11.3-py2.7.egg/fanstatic/publisher.py', line 234 in __call__
  return request.get_response(self.app)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/request.py', line 1149 in get_response
  application, catch_exc_info=False)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/request.py', line 1118 in call_application
  app_iter = application(self.environ, start_response)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/dec.py', line 132 in __call__
  resp = self.call_func(req, *args, **self.kwargs)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/dec.py', line 197 in call_func
  return self.func(req, *args, **kwargs)
File '/var/local/eggs/fanstatic-0.11.3-py2.7.egg/fanstatic/injector.py', line 52 in __call__
  response = request.get_response(self.app)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/request.py', line 1149 in get_response
  application, catch_exc_info=False)
File '/var/local/eggs/WebOb-1.2b2-py2.7.egg/webob/request.py', line 1118 in call_application
  app_iter = application(self.environ, start_response)
File '/var/local/eggs/Paste-1.7.5.1-py2.7.egg/paste/translogger.py', line 68 in __call__
  return self.application(environ, replacement_start_response)
File '/var/local/env/ztfy/src/webapp/startup.py', line 32 in wrapper
  return app(environ, start_response)
File '/var/local/eggs/zope.app.wsgi-3.10.0-py2.7.egg/zope/app/wsgi/__init__.py', line 59 in __call__
  request = publish(request, handle_errors=handle_errors)
File '/var/local/eggs/zope.publisher-3.12.6-py2.7.egg/zope/publisher/publish.py', line 132 in publish
  result = publication.callObject(request, obj)
File '/var/local/eggs/zope.app.publication-3.12.0-py2.7.egg/zope/app/publication/zopepublication.py', line 207 in callObject
  return mapply(ob, request.getPositionalArguments(), request)
<bound method ZodbInfoView.__call__ of <zope.browserpage.metaconfigure.ZodbInfoView object at 0x6251850>>
File '/var/local/eggs/zope.publisher-3.12.6-py2.7.egg/zope/publisher/publish.py', line 107 in mapply
  return debug_call(obj, args)
File '/var/local/eggs/zope.publisher-3.12.6-py2.7.egg/zope/publisher/publish.py', line 113 in debug_call
  return obj(*args)
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/browser.py', line 91 in __call__
  return self.render()
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/browser.py', line 149 in render
  return self.template()
File '/var/local/eggs/zope.browserpage-3.12.2-py2.7.egg/zope/browserpage/viewpagetemplatefile.py', line 83 in __call__
  return self.im_func(im_self, *args, **kw)
File '/var/local/eggs/zope.browserpage-3.12.2-py2.7.egg/zope/browserpage/viewpagetemplatefile.py', line 51 in __call__
  sourceAnnotations=getattr(debug_flags, 'sourceAnnotations', 0),
File '/var/local/eggs/zope.pagetemplate-3.6.3-py2.7.egg/zope/pagetemplate/pagetemplate.py', line 132 in pt_render
  strictinsert=0, sourceAnnotations=sourceAnnotations
File '/var/local/eggs/zope.pagetemplate-3.6.3-py2.7.egg/zope/pagetemplate/pagetemplate.py', line 240 in __call__
  interpreter()
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 271 in __call__
  self.interpret(self.program)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 888 in do_useMacro
  self.interpret(macro)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 533 in do_optTag_tal
  self.do_optTag(stuff)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 518 in do_optTag
  return self.no_tag(start, program)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 513 in no_tag
  self.interpret(program)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 858 in do_defineMacro
  self.interpret(macro)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 946 in do_defineSlot
  self.interpret(slot)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 533 in do_optTag_tal
  self.do_optTag(stuff)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 518 in do_optTag
  return self.no_tag(start, program)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 513 in no_tag
  self.interpret(program)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 343 in interpret
  handlers[opcode](self, args)
File '/var/local/eggs/zope.tal-3.5.2-py2.7.egg/zope/tal/talinterpreter.py', line 583 in do_setLocal_tal
  self.engine.setLocal(name, self.engine.evaluateValue(expr))
Line 87, Column 2
In expression: <PathExpr standard:u'view/listHistory'>
   - Names:
      {'args': (),
       'context': <onf.medialib.media.folder.MediaFolder object at 0x508c938>,
       'default': <object object at 0xb3c450>,
       'loop': {},
       'nothing': None,
       'options': {},
       'repeat': {},
       'request': <zope.publisher.browser.BrowserRequest instance URL=http://172.23.109.204:8080/++skin++ZMI/medias/++medias++/2012/@@zodbbrowser>,
       'template': <zope.browserpage.viewpagetemplatefile.ViewPageTemplateFile object at 0x54eb3d0>,
       'view': <zope.browserpage.metaconfigure.ZodbInfoView object at 0x6251850>,
       'views': <zope.browserpage.viewpagetemplatefile.ViewMapper object at 0x61e0810>}
File '/var/local/eggs/zope.tales-3.5.2-py2.7.egg/zope/tales/tales.py', line 696 in evaluate
  return expression(self)
File '/var/local/eggs/zope.tales-3.5.2-py2.7.egg/zope/tales/expressions.py', line 217 in __call__
  return self._eval(econtext)
File '/var/local/eggs/zope.tales-3.5.2-py2.7.egg/zope/tales/expressions.py', line 211 in _eval
  return ob()
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/browser.py', line 380 in listHistory
  diff = compareDictsHTML(curState, oldState, d['tid'])
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/diff.py', line 118 in compareDictsHTML
  html.append(IValueRenderer(value).render(tid))
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/value.py', line 241 in render
  value = self.delegate_to(obj).render(tid, can_link=False)
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/value.py', line 79 in render
  text = self._repr()
File '/var/local/eggs/zodbbrowser-0.10.3-py2.7.egg/zodbbrowser/value.py', line 69 in _repr
  u64(self.context._p_oid))
File '/var/local/eggs/ZODB3-3.10.5-py2.7-linux-x86_64.egg/ZODB/utils.py', line 82 in u64
  return unpack(">Q", v)[0]
error: unpack requires a string argument of length 8

CGI Variables
-------------
  CONTENT_LENGTH: '0'
  HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
  HTTP_ACCEPT_CHARSET: 'UTF-8,*;q=0.5'
  HTTP_ACCEPT_ENCODING: 'gzip,deflate,sdch'
  HTTP_ACCEPT_LANGUAGE: 'fr,en-US;q=0.8,en;q=0.6,en-GB;q=0.4'
  HTTP_CACHE_CONTROL: 'max-age=0'
  HTTP_CONNECTION: 'keep-alive'
  HTTP_COOKIE: 'zope3_cs_15272f7b=fr1-jvnwVQpWaX6mw9r8j2dHy1wLElupkS2mkdNtIao8VN.qOF4Q7E; LibraryLayout=%7B%22west%22%3A%7B%22size%22%3A250%2C%22initClosed%22%3Afalse%2C%22initHidden%22%3Afalse%7D%7D; InnerLayout=%7B%22north%22%3A%7B%22size%22%3A80%2C%22initClosed%22%3Afalse%2C%22initHidden%22%3Afalse%7D%2C%22south%22%3A%7B%22size%22%3A230%2C%22initClosed%22%3Afalse%2C%22initHidden%22%3Afalse%7D%7D'
  HTTP_HOST: '172.23.109.204:8080'
  HTTP_REFERER: 'http://172.23.109.204:8080/++skin++ZMI/medias/++medias++/2012/@@introspector.html'
  HTTP_USER_AGENT: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.4 (KHTML, like Gecko) Chrome/22.0.1229.94 Safari/537.4'
  PATH_INFO: '/++skin++ZMI/medias/++medias++/2012/@@zodbbrowser'
  REMOTE_ADDR: '172.23.109.204'
  REQUEST_METHOD: 'GET'
  SERVER_NAME: '172.23.109.204'
  SERVER_PORT: '8080'
  SERVER_PROTOCOL: 'HTTP/1.1'

WSGI Variables
--------------
  application: <fanstatic.publisher.Delegator object at 0x2a19dd0>
  fanstatic.needed: <fanstatic.core.NeededResources object at 0x3ab03d0>
  paste.evalexception: <z3c.evalexception.ZopeEvalException object at 0x2a03390>
  paste.evalexception.debug_count: 1355844767
  paste.httpserver.thread_pool: <paste.httpserver.ThreadPool object at 0x3946210>
  paste.throw_errors: True
  webob.adhoc_attrs: {'response': <Response at 0x29fdf50 200 OK>}
  wsgi process: 'Multithreaded'
  wsgi.handleErrors: False

Best regards,
Thierry

Marius Gedminas (mgedmin) wrote :

Can you test if this patch is sufficient to make this problem go away?

Marius Gedminas (mgedmin) wrote :

Never mind, that patch had a stupid bug. How about this one?

Marius Gedminas (mgedmin) wrote :

Oh, cool, I can reproduce this too.

In fact the zodbbrowser functional tests no longer work. Something changed in one of the dependencies? Because my 'make release' runs the full test suite, so things must've been working when I released 0.10.3.

Marius Gedminas (mgedmin) wrote :

Looking at http://bazaar.launchpad.net/~zodbbrowser-dev/zodbbrowser/trunk/revision/346 I don't understand

  (1) WTF was I doing with that 'if True:' business
  (2) how on Earth did the functional tests still pass (expected: "Folder object at 0xXXXXX" when the code was supposed to print "Folder with oid 0xXX")
  (3) why am I currently getting _p_oid of None in all the oldstate records.

Okay (2) is answered by "my tox.ini is woefully broken and tests pass when they shouldn't". 0.10.3 is simply broken, please use 0.10.2 until I untangle this mess.

Changed in zodbbrowser:
importance: Undecided → Critical
status: New → In Progress
Changed in zodbbrowser:
milestone: none → 0.10.4
status: In Progress → Fix Committed
summary: - Problem with ZODB Browser 0.10.3
+ error: unpack requires a string argument of length 8
Changed in zodbbrowser:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers