[NumPy-Tickets] [NumPy] #2178: regression: closes not-owned handle
NumPy Trac
numpy-tickets@scipy....
Mon Jul 2 14:27:26 CDT 2012
#2178: regression: closes not-owned handle
------------------------+---------------------------------------------------
Reporter: yarikoptic | Owner: somebody
Type: defect | Status: new
Priority: normal | Milestone: Unscheduled
Component: Other | Version: 1.6.1
Keywords: |
------------------------+---------------------------------------------------
Comment(by yarikoptic):
a bit of the stack/trace for real-world example where in
numpy.lib.npyio.NpzFile.close() (called from __del__) it would close the
handle which it doesn't own... may be because somewhere it first assigned
the same original FID to the temporary zipfile:
{{{
$> PYTHONPATH=$PWD:/home/yoh/proj/numpy nosetests -s -v
test/unittests/test_files.py:test_NumpyBinaryFile
/usr/bin/nosetests:5: UserWarning: Module paste was already imported from
None, but /usr/lib/python2.7/dist-packages is being added to sys.path
from pkg_resources import load_entry_point
/usr/lib/python2.7/dist-packages/tables/__init__.py:59: RuntimeWarning:
numpy.dtype size changed, may indicate binary incompatibility
from tables.utilsExtension import getPyTablesVersion, getHDF5Version
/usr/lib/python2.7/dist-packages/tables/file.py:45: RuntimeWarning:
numpy.dtype size changed, may indicate binary incompatibility
from tables import hdf5Extension
/usr/lib/python2.7/dist-packages/tables/link.py:32: RuntimeWarning:
numpy.dtype size changed, may indicate binary incompatibility
from tables import linkExtension
/usr/lib/python2.7/dist-packages/tables/table.py:40: RuntimeWarning:
numpy.dtype size changed, may indicate binary incompatibility
from tables import tableExtension
/usr/lib/python2.7/dist-packages/tables/index.py:45: RuntimeWarning:
numpy.dtype size changed, may indicate binary incompatibility
from tables import indexesExtension
unittests.test_files.test_NumpyBinaryFile ... (/home/yoh/deb/gits/pkg-
exppsy/pynn/test/unittests/test_files.py:107): test_NumpyBinaryFile
107 metadata_ = nbf.get_metadata()
(Pydb) print nbf.fileobj
<open file 'tmp.npz', mode 'r' at 0x2c2c150>
(Pydb) b /usr/lib/python2.7/zipfile.py:1157
Breakpoint 1 set in file /usr/lib/python2.7/zipfile.py, line 1157.
(Pydb) c
(/usr/lib/python2.7/zipfile.py:1157): close
1157 if self.fp is None:
(Pydb) print self.fp
<open file 'tmp.npz', mode 'r' at 0x2c2c150>
(Pydb) bt
-> 0 close(self=<zipfile.ZipFile instance at 0x2d6aa28>) called from file
'/usr/lib/python2.7/zipfile.py' at line 1157
## 1 close(self=<numpy.lib.npyio.NpzFile object at 0x2dd3a90>) called from
file '/home/yoh/proj/numpy/numpy/lib/npyio.py' at line 212
## 2 __del__(self=<numpy.lib.npyio.NpzFile object at 0x2dd3a90>) called
from file '/home/yoh/proj/numpy/numpy/lib/npyio.py' at line 220
## 3 test_NumpyBinaryFile() called from file '/home/yoh/deb/gits/pkg-
exppsy/pynn/test/unittests/test_files.py' at line 107
## 4 runTest(self=unittests.test_files.test_NumpyBinaryFile) called from
file '/usr/share/pyshared/nose/case.py' at line 197
## 5 run(self=unittests.test_files.test_NumpyBinaryFile,
result=<nose.result.TextTestResult run=1 errors=0 f...) called from file
'/usr/lib/python2.7/unittest/case.py' at line 327
## 6 __call__(self=unittests.test_files.test_NumpyBinaryFile,
*args=(<nose.result.TextTestResult run=1 errors=0 f...) called from file
'/usr/lib/python2.7/unittest/case.py' at line 391
## 7 runTest(self=Test(unittests.test_files.test_NumpyBinaryFile),
result=<nose.result.TextTestResult run=1 erro...) called from file
'/usr/share/pyshared/nose/case.py' at line 151
## 8 run(self=Test(unittests.test_files.test_NumpyBinaryFile),
result=<nose.result.TextTestResult run=1 erro...) called from file
'/usr/share/pyshared/nose/case.py' at line 133
## 9 __call__(self=Test(unittests.test_files.test_NumpyBinaryFile),
*arg=(<nose.result.TextTestResult run=1 error...) called from file
'/usr/share/pyshared/nose/case.py' at line 45
## 10 run(self=<nose.suite.ContextSuite context=unittests.test_files>,
result=<nose.result.TextTestResult run...) called from file
'/usr/share/pyshared/nose/suite.py' at line 223
## 11 __call__(self=<nose.suite.ContextSuite
context=unittests.test_files>, *arg=(<nose.result.TextTestResult run=...)
called from file '/usr/share/pyshared/nose/suite.py' at line 176
## 12 run(self=<nose.suite.ContextSuite context=unittests.test_files>,
result=<nose.result.TextTestResult run...) called from file
'/usr/share/pyshared/nose/suite.py' at line 223
## 13 __call__(self=<nose.suite.ContextSuite
context=unittests.test_files>, *arg=(<nose.result.TextTestResult run=...)
called from file '/usr/share/pyshared/nose/suite.py' at line 176
## 14 run(self=<nose.core.TextTestRunner object at 0x2108fd0>,
test=<nose.suite.ContextSuite context=unittest...) called from file
'/usr/share/pyshared/nose/core.py' at line 61
## 15 runTests(self=<nose.core.TestProgram object at 0x1cf19d0>) called
from file '/usr/share/pyshared/nose/core.py' at line 197
## 16 __init__(self=<nose.core.TestProgram object at 0x1cf19d0>,
module=None, defaultTest='.', argv=['/usr/bin/nos...) called from file
'/usr/lib/python2.7/unittest/main.py' at line 95
## 17 __init__(self=<nose.core.TestProgram object at 0x1cf19d0>,
module=None, defaultTest='.', argv=None, testRunn...) called from file
'/usr/share/pyshared/nose/core.py' at line 118
## 18 <module> file '/usr/bin/nosetests' at line 9
(Pydb) up
(/home/yoh/proj/numpy/numpy/lib/npyio.py:212): close
212 self.zip.close()
(Pydb)
(/home/yoh/proj/numpy/numpy/lib/npyio.py:220): __del__
220 self.close()
(Pydb)
(/home/yoh/deb/gits/pkg-exppsy/pynn/test/unittests/test_files.py:107):
test_NumpyBinaryFile
107 metadata_ = nbf.get_metadata()
(Pydb) down
(/home/yoh/proj/numpy/numpy/lib/npyio.py:220): __del__
220 self.close()
(Pydb)
(/home/yoh/proj/numpy/numpy/lib/npyio.py:212): close
212 self.zip.close()
(Pydb) l
207 """
208 Close the file.
209
210 """
211 if self.zip is not None:
212 -> self.zip.close()
213 self.zip = None
214 if self.fid is not None:
215 self.fid.close()
216 self.fid = None
(Pydb) print self.fid
<open file 'tmp.npz', mode 'r' at 0x2c2c150>
*(Pydb) print self.zip.fp == self.fid
True
}}}
--
Ticket URL: <http://projects.scipy.org/numpy/ticket/2178#comment:1>
NumPy <http://projects.scipy.org/numpy>
My example project
More information about the NumPy-Tickets
mailing list