◐ Shell
clean mode source ↗

bpo-36356: Release Unicode interned strings on Valgrind by vstinner · Pull Request #12431 · python/cpython

Conversation

@vstinner

When Python is compiled with Valgrind support, release Unicode
interned strings at exit in _PyUnicode_Fini().

  • Rename _Py_ReleaseInternedUnicodeStrings() to
    unicode_release_interned() and make it private.
  • unicode_release_interned() is now called from _PyUnicode_Fini():
    it must be called with a running Python thread state for TRASHCAN,
    it cannot be called from pymain_free().
  • Don't display statistics on interned strings at exit anymore

https://bugs.python.org/issue36356

When Python is compiled with Valgrind support, release Unicode
interned strings at exit in _PyUnicode_Fini().

* Rename _Py_ReleaseInternedUnicodeStrings() to
  unicode_release_interned() and make it private.
* unicode_release_interned() is now called from _PyUnicode_Fini():
  it must be called with a running Python thread state for TRASHCAN,
  it cannot be called from pymain_free().
* Don't display statistics on interned strings at exit anymore

@vstinner

@ericsnowcurrently: I'm not sure if interned strings are supposed to survive Py_Finalize(). I don't think so. Anyway, after Py_Finalize(), we cannot free interned strings anymore, since the code uses Py_TRASHCAN API which requires a valid Python thread state... but Py_Finalize() free all Python thread states!

@bedevere-bot

@vstinner: Please replace # with GH- in the commit message next time. Thanks!

Labels