Issue3667
Created on 2008-08-24 20:54 by amaury.forgeotdarc, last changed 2008-09-04 02:28 by benjamin.peterson.
| File name |
Uploaded |
Description |
Edit |
Remove |
|
import-leak.patch
|
amaury.forgeotdarc,
2008-08-28 12:05
|
|
|
|
|
msg71867 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) |
Date: 2008-08-24 20:54 |
|
With python2.6, reloading extension modules does not always leak memory:
Python 2.6b2+ (trunk, Aug 19 2008, 23:45:24) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
[34467 refs]
>>> import audioop; del sys.modules['audioop']
[34677 refs]
>>> import audioop; del sys.modules['audioop']
[34677 refs]
But with 3.0, reloading audioop leaks 60 references every time (seen in
test_unittest):
Python 3.0b3+ (py3k, Aug 24 2008, 21:56:40) [MSC v.1500 32 bit (Intel)]
on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
[42018 refs]
>>> import audioop; del sys.modules['audioop']
[42257 refs]
>>> import audioop; del sys.modules['audioop']
[42317 refs]
>>> import audioop; del sys.modules['audioop']
[42377 refs]
>>> import audioop; del sys.modules['audioop']
[42437 refs]
>>> import audioop; del sys.modules['audioop']
[42497 refs]
OK, many things cannot be reinitialized for C-written modules (static
variables &co), this is not the case for audioop. Furthermore, I thought
that the new module API was to support proper cleanup of modules
|
|
msg72085 - (view) |
Author: Amaury Forgeot d'Arc (amaury.forgeotdarc) |
Date: 2008-08-28 12:05 |
|
The fix is actually simple: _PyImport_FindExtension() used to return a
borrowed reference, the "strong" reference being stored in the
PyImport_GetModuleDict() dictionary. All paths should behave the same.
See attached patch.
(for unit tests, run for example
regrtest.py -R:: test_site
)
|
|
msg72466 - (view) |
Author: Barry A. Warsaw (barry) |
Date: 2008-09-04 02:27 |
|
The patch looks good. Benjamin will commit this.
|
|
msg72467 - (view) |
Author: Benjamin Peterson (benjamin.peterson) |
Date: 2008-09-04 02:28 |
|
Fixed in r66204.
|
|
| Date |
User |
Action |
Args |
| 2008-09-04 02:28:32 | benjamin.peterson | set | status: open -> closed resolution: accepted -> fixed messages:
+ msg72467 |
| 2008-09-04 02:27:54 | barry | set | assignee: loewis -> benjamin.peterson resolution: accepted messages:
+ msg72466 nosy:
+ benjamin.peterson, barry |
| 2008-08-30 17:18:13 | georg.brandl | set | assignee: loewis nosy:
+ loewis |
| 2008-08-28 12:05:14 | amaury.forgeotdarc | set | keywords:
+ needs review, patch files:
+ import-leak.patch messages:
+ msg72085 |
| 2008-08-24 20:54:59 | amaury.forgeotdarc | create | |
|