[ python-Bugs-1233578 ] Pickle protocols 1, 2 can't handle "inf" floats.

SourceForge.net noreply at sourceforge.net
Fri Jul 15 18:57:40 CEST 2005


Bugs item #1233578, was opened at 2005-07-06 10:03
Message generated for change (Comment added) made by melicertes
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1233578&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Python Library
Group: Python 2.4
Status: Closed
Resolution: Out of Date
Priority: 5
Submitted By: Charles (melicertes)
Assigned to: Michael Hudson (mwh)
Summary: Pickle protocols 1, 2 can't handle "inf" floats.

Initial Comment:
Python 2.4.1 on an AMD64 system.  The pickle module
barfs with a "SystemError: frexp() result out of range"
if an "inf" float value is pickled with pickle protocol
1 or 2.  It works fine with the old protocol 0.

Minimal test case:

>>> import pickle
>>> o = 2e308
>>> print o
inf
>>> pickle.dumps(o, protocol=0)
'Finf\n.'
>>>
>>> pickle.dumps(o, protocol=1)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/pickle.py", line 1386, in dumps
    Pickler(file, protocol, bin).dump(obj)
  File "/usr/lib/python2.4/pickle.py", line 231, in dump
    self.save(obj)
  File "/usr/lib/python2.4/pickle.py", line 293, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.4/pickle.py", line 489, in
save_float
    self.write(BINFLOAT + pack('>d', obj))
SystemError: frexp() result out of range
>>>
>>> pickle.dumps(o, protocol=2)
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "/usr/lib/python2.4/pickle.py", line 1386, in dumps
    Pickler(file, protocol, bin).dump(obj)
  File "/usr/lib/python2.4/pickle.py", line 231, in dump
    self.save(obj)
  File "/usr/lib/python2.4/pickle.py", line 293, in save
    f(self, obj) # Call unbound method with explicit self
  File "/usr/lib/python2.4/pickle.py", line 489, in
save_float
    self.write(BINFLOAT + pack('>d', obj))
SystemError: frexp() result out of range



----------------------------------------------------------------------

>Comment By: Charles (melicertes)
Date: 2005-07-15 10:57

Message:
Logged In: YES 
user_id=1064824

> (And also the third time I've closed this bug in the last
> fortnight!  FFS guys!)

FFS, indeed.  Blame SourceForge's lousy search; I used the
bug tracker search to look for all (open, closed,
everything) reports for Python, all versions, keywords
"pickle" and "inf" and got zero results.  Similar searches
on "pickle" and the exception name also produced zero
results.  Call me silly, but zero search results led me to
believe that there /were/ no results.


----------------------------------------------------------------------

Comment By: Michael Hudson (mwh)
Date: 2005-07-06 10:06

Message:
Logged In: YES 
user_id=6656

This is fixed in CVS.

(And also the third time I've closed this bug in the last
fortnight!  FFS guys!)

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1233578&group_id=5470


More information about the Python-bugs-list mailing list