[ZODB-Dev] [ zodb-Bugs-650465 ] Pickling error with Python 2.2.2
noreply@sourceforge.net
noreply@sourceforge.net
Mon, 09 Dec 2002 09:32:00 -0800
Bugs item #650465, was opened at 2002-12-08 17:13
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=115628&aid=650465&group_id=15628
Category: None
Group: None
Status: Open
Resolution: None
Priority: 7
Submitted By: Andreas Jung (ajung)
Assigned to: Nobody/Anonymous (nobody)
Summary: Pickling error with Python 2.2.2
Initial Comment:
The following traceback is caused by a fresh
Zope/CMF checkout using Python 2.2.2 and
CMFCollectorNG:
Traceback (innermost last):
Module ZPublisher.Publish, line 102, in publish
Module Zope.App.startup, line 200, in commit
Module ZODB.Transaction, line 234, in commit
Module ZODB.Transaction, line 350, in
_commit_objects
Module ZODB.Connection, line 381, in commit
- __traceback_info__:
(('Products.CMFCollectorNG.CollectorNGIssue',
'CollectorNGIssue'), '\x00\x00\x00\x00\x00\x00\x18
\xf6', '')
Module copy_reg, line 57, in _reduce
TypeError: can't pickle function objects
This error occurs when a new ticket is added
a collector instance. This error does not
occur using Python 2.1.3.
How to reproduce:
- create a fresh sandbox using Zope/CMF/DCWorkflow
from HEAD with Python 2.2.2 (under Linux)
- Install CMFCollectorNG from
http://sourceforge.net/project/showfiles.php?
group_id=68417 (just extract the tar.gz file)
- install the attached Data.fs
- restart Zope
- go to http://yetix:20080/trackers/login_form
and login as admin/pnmaster
- goto
http://yetix:20080/trackers/test/collector_add_issue_for
m
- fill out all fields with the red background (required fields)
- click on "Ticket anlegen" (Submit ticket)
- now you should see an error screen:
Ein Fehler ist aufgetreten:
Fehler-Typ: TypeError
Fehler-Grund: can't pickle function objects
Zurück
Zeige Eintrag im Error-Logfile
- check the error_log inside Zope to get the full
tracebrack
Andreas
----------------------------------------------------------------------
>Comment By: Jeremy Hylton (jhylton)
Date: 2002-12-09 17:32
Message:
Logged In: YES
user_id=31392
It looks like the problem is with the __str__ attribute of
the object: It is a bound method, which can't be pickled.
Can you tell who is assigning the __str__?
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-09 17:20
Message:
Logged In: YES
user_id=11084
I see two invocations when I repeat the action that causes
the problem. In both cases, 'state' is a dictionary. I
attach a dump
of the key-value pairs.
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-09 17:18
Message:
Logged In: YES
user_id=11084
Hm....i added a "print state, type(state)". I see two
invocations.
Everytime state is a dictionary. I upload a dump of the
key-value
pairs. Looking through the output I can not see anything
strange.
----------------------------------------------------------------------
Comment By: Jeremy Hylton (jhylton)
Date: 2002-12-09 17:00
Message:
Logged In: YES
user_id=31392
Two possibilities:
Print out state so that we can see what's in it.
Run dumps(state) inside pdb.
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-09 16:56
Message:
Logged In: YES
user_id=11084
What is the recommended way to find the function object?
Line 381 of Connection.py is "dump(state)".
I added some debug before the last action inside the application
before the commit. There I iterated over all items returned
by dir(obj). "print obj.__reduce__" raises a "TypeError,
Can't pickle objects in acquisition wrappers." I am sure if
this is related to the problem.
----------------------------------------------------------------------
Comment By: Jeremy Hylton (jhylton)
Date: 2002-12-09 16:49
Message:
Logged In: YES
user_id=31392
Can you get into a debugger and figure out what function
object is getting pickled? I don't know if there's any easy
way to do this from Zope.
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-08 17:22
Message:
Logged In: YES
user_id=11084
The Data.fs seems to be to big for Sourceforge.
You can download it from
http://www.zopyx.com/tmp/Data.fs.bz2
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-08 17:20
Message:
Logged In: YES
user_id=11084
Attaching Data.fs again. SF sux sometimes ;)
----------------------------------------------------------------------
Comment By: Andreas Jung (ajung)
Date: 2002-12-08 17:16
Message:
Logged In: YES
user_id=11084
Attaching Data.fs
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=115628&aid=650465&group_id=15628