Bugzilla will be upgraded to version 5.0. The upgrade date is tentatively scheduled for 2 December 2018, pending final testing and feedback.
Bug 1223037 - Python raises exception on deepcopy of instance methods
Python raises exception on deepcopy of instance methods
Status: CLOSED ERRATA
Product: Red Hat Enterprise Linux 6
Classification: Red Hat
Component: python (Show other bugs)
6.7
All All
urgent Severity urgent
: rc
: 6.7
Assigned To: Python Maintainers
Branislav Náter
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2015-05-19 12:17 EDT by mulhern
Modified: 2015-07-22 02:40 EDT (History)
12 users (show)

See Also:
Fixed In Version: python-2.6.6-64.el6
Doc Type: Bug Fix
Doc Text:
Cause: When using deepcopy on instance methods, a TypeError exception is thrown. Consequence: An exception TypeError is thrown, when using deepcopy on instance methods. Fix: Make deepcopy take shallow copies of functions and classes. Result: Deepcopy is now usable on instance methods.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2015-07-22 02:40:23 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)


External Trackers
Tracker ID Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2015:1330 normal SHIPPED_LIVE Moderate: python security, bug fix, and enhancement update 2015-07-20 14:00:12 EDT

  None (edit)
Description mulhern 2015-05-19 12:17:49 EDT
Description of problem:

Python 2.6 raises an exception on deepcopy of instance methods.

Version-Release number of selected component (if applicable):

2.6.6

How reproducible:

Always, if non-builtin instance method is explicitly deep copied.

Steps to Reproduce:
1. start python
2. type following at python prompt

>>> import uuid
>>> an_id = uuid.uuid1()
>>> import copy
>>> copy.deepcopy(an_id.get_bytes)

3. See TypeError: instancemethod expected...

Actual results:

TypeError raised

Expected results:

Deepcopy made.

Additional info:

The patch is located here: https://hg.python.org/cpython/rev/83c702c17e02/.
It landed in Python 2.7 and has remained stable since.
Comment 4 Branislav Náter 2015-06-12 12:27:50 EDT
Reproduced on python-2.6.6-52.el6:

:: [  BEGIN   ] :: Run reproducer :: actually running 'python test.py'
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    copy.deepcopy(an_id.get_bytes)
  File "/usr/lib64/python2.6/copy.py", line 189, in deepcopy
    y = _reconstruct(x, rv, 1, memo)
  File "/usr/lib64/python2.6/copy.py", line 323, in _reconstruct
    y = callable(*args)
  File "/usr/lib64/python2.6/copy_reg.py", line 93, in __newobj__
    return cls.__new__(cls, *args)
TypeError: instancemethod expected at least 2 arguments, got 0
:: [   FAIL   ] :: Run reproducer (Expected 0, got 1)

Verified on python-2.6.6-64.el6:
:: [  BEGIN   ] :: Run reproducer :: actually running 'python test.py'
:: [   PASS   ] :: Run reproducer (Expected 0, got 0)
Comment 5 errata-xmlrpc 2015-07-22 02:40:23 EDT
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://rhn.redhat.com/errata/RHSA-2015-1330.html

Note You need to log in before you can comment on or make changes to this bug.