This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: unicode encoding has lots of leaks of bytes
Type: resource usage Stage:
Components: Interpreter Core Versions: Python 3.0
process
Status: closed Resolution: duplicate
Dependencies: Superseder: eval() leaks 1 reference every time
View: 3651
Assigned To: Nosy List: nnorwitz
Priority: release blocker Keywords:

Created on 2008-08-24 03:01 by nnorwitz, last changed 2022-04-11 14:56 by admin. This issue is now closed.

Messages (3)
msg71825 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2008-08-24 03:01
Some of these leaks reported by valgrind are likely duplicates.  I don't
know how many individual cases of these leaks there are.

11,119 bytes in 14 blocks are possibly lost in loss record 86 of 119
    realloc (vg_replace_malloc.c:429)
    _PyBytes_Resize (bytesobject.c:3159)
    multibytecodec_encode (multibytecodec.c:536)
    MultibyteCodec_Encode (multibytecodec.c:588)
    PyObject_Call (abstract.c:2181)
    PyEval_CallObjectWithKeywords (ceval.c:3283)
    PyCodec_Encode (codecs.c:354)
    PyUnicodeUCS2_AsEncodedString (unicodeobject.c:1347)
    unicode_encode (unicodeobject.c:6682)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalFrameEx (ceval.c:3491)
    PyEval_EvalCodeEx (ceval.c:2840)

11,882 bytes in 15 blocks are possibly lost in loss record 87 of 119
    malloc (vg_replace_malloc.c:207)
    PyBytes_FromStringAndSize (bytesobject.c:87)
    PyUnicodeUCS2_EncodeUTF8 (unicodeobject.c:2250)
    utf_8_encode (_codecsmodule.c:719)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalFrameEx (ceval.c:3491)
    PyEval_EvalFrameEx (ceval.c:3491)
    PyEval_EvalCodeEx (ceval.c:2840)
    function_call (funcobject.c:628)
    PyObject_Call (abstract.c:2181)
    PyEval_EvalFrameEx (ceval.c:3704)
    PyEval_EvalCodeEx (ceval.c:2840)

271,937 bytes in 437 blocks are definitely lost in loss record 108 of 119
    malloc (vg_replace_malloc.c:207)
    PyBytes_FromStringAndSize (bytesobject.c:87)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalFrameEx (ceval.c:3501)
    PyEval_EvalFrameEx (ceval.c:3491)
    PyEval_EvalCodeEx (ceval.c:2840)
    function_call (funcobject.c:628)
    PyObject_Call (abstract.c:2181)
    PyEval_EvalFrameEx (ceval.c:3704)
    PyEval_EvalCodeEx (ceval.c:2840)
    function_call (funcobject.c:628)


331,647 bytes in 277 blocks are definitely lost in loss record 111 of 119
    realloc (vg_replace_malloc.c:429)
    _PyBytes_Resize (bytesobject.c:3159)
    PyUnicodeUCS2_EncodeUTF8 (unicodeobject.c:2256)
    _PyUnicodeUCS2_AsDefaultEncodedString (unicodeobject.c:1412)
    source_as_string (bltinmodule.c:504)
    builtin_exec (bltinmodule.c:788)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalFrameEx (ceval.c:3501)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalCode (ceval.c:519)
    builtin_exec (bltinmodule.c:785)

274,686 bytes in 446 blocks are definitely lost in loss record 114 of 128
    malloc (vg_replace_malloc.c:207)
    PyBytes_FromStringAndSize (bytesobject.c:87)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalFrameEx (ceval.c:3501)
    PyEval_EvalFrameEx (ceval.c:3491)
    PyEval_EvalCodeEx (ceval.c:2840)
    function_call (funcobject.c:628)
    PyObject_Call (abstract.c:2181)
    PyEval_EvalFrameEx (ceval.c:3704)
    PyEval_EvalCodeEx (ceval.c:2840)
    function_call (funcobject.c:628)

734,178 bytes in 293 blocks are definitely lost in loss record 121 of 
    realloc (vg_replace_malloc.c:429)
    _PyBytes_Resize (bytesobject.c:3159)
    PyUnicodeUCS2_EncodeUTF8 (unicodeobject.c:2256)
    _PyUnicodeUCS2_AsDefaultEncodedString (unicodeobject.c:1412)
    source_as_string (bltinmodule.c:504)
    builtin_exec (bltinmodule.c:788)
    PyEval_EvalFrameEx (ceval.c:3403)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalFrameEx (ceval.c:3501)
    PyEval_EvalCodeEx (ceval.c:2840)
    PyEval_EvalCode (ceval.c:519)
    builtin_exec (bltinmodule.c:785)
msg71826 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2008-08-24 03:30
There are also tons of reference leaks when running regrtest.py with -R.
 Even code as simple as this leaks:

>>> eval('1')
1
[40731 refs]
>>> eval('1')
1
[40732 refs]
>>> eval('1')
1
[40733 refs]
>>> eval('1')
1
[40734 refs]
>>> eval('1')
1
[40735 refs]
msg71829 - (view) Author: Neal Norwitz (nnorwitz) * (Python committer) Date: 2008-08-24 05:51
This is a partial (or complete) duplicate of 3651.
History
Date User Action Args
2022-04-11 14:56:38adminsetgithub: 47906
2008-08-24 09:47:41amaury.forgeotdarcsetstatus: open -> closed
resolution: duplicate
superseder: eval() leaks 1 reference every time
2008-08-24 05:51:34nnorwitzsetmessages: + msg71829
2008-08-24 03:30:09nnorwitzsetmessages: + msg71826
2008-08-24 03:01:50nnorwitzcreate