{{ message }}
bpo-29110: Fix file object leak in aifc.open.#162
Merged
methane merged 1 commit intoFeb 22, 2017
Merged
Conversation
methane
reviewed
Feb 21, 2017
methane
requested changes
Feb 22, 2017
methane
left a comment
Member
There was a problem hiding this comment.
Please add an entry at Lib section in Misc/NEWS.
Sorry, something went wrong.
Contributor
Author
|
Rebased and squashed on upstream, added NEWS entry, and fixed the style thing noted above! |
Sorry, something went wrong.
methane
reviewed
Feb 22, 2017
Contributor
Author
|
Added and squashed! |
Sorry, something went wrong.
methane
approved these changes
Feb 22, 2017
Member
|
We use "Squash and merge" in Github. So squash is not needed for next time. BTW, since this is bugfix, would you create backport (cherry-pick) pull request for 3.5 and 3.6 branch? |
Sorry, something went wrong.
methane
added a commit
that referenced
this pull request
Feb 26, 2017
methane
pushed a commit
to methane/cpython
that referenced
this pull request
Feb 26, 2017
…F file. (pythonGH-162) (cherry picked from commit 03f68b6)
methane
added a commit
to methane/cpython
that referenced
this pull request
Feb 26, 2017
follow up of pythonGH-162 (cherry picked from commit 5dc33ee)
This was referenced Feb 26, 2017
methane
pushed a commit
to methane/cpython
that referenced
this pull request
Feb 26, 2017
…F file. (pythonGH-162) (cherry picked from commit 03f68b6)
methane
added a commit
to methane/cpython
that referenced
this pull request
Feb 26, 2017
follow up of pythonGH-162 (cherry picked from commit 5dc33ee)
jaraco
pushed a commit
that referenced
this pull request
Dec 2, 2022
lazka
pushed a commit
to lazka/cpython
that referenced
this pull request
Feb 10, 2024
When building shared modules (*.pyd) for MinGW, they link against the import library for the main python (e.g. -lpython3.11). When linking shared modules on Linux, this doesn't happen, but those shared libraries are linked with undefined references which then are fulfilled by the host process when they are loaded. Add a dependency to make sure that $(LDLIBRARY), e.g. libpython$(LDVERSION).dll.a, exists before starting to build the shared modules. Previously, if libpython$(LDVERSION).dll.a didn't exist when the shared modules were linked, some of them failed to link, but this wasn't reported as an error in the build, and a later invocation of setup.py would retry building them, which then would succeed. E.g. there was a seemingly benign race condition in the build. However, in some rare cases, the race condition no longer was benign. The build also produces a corresponding static library, $(LIBRARY), e.g. libpython$(VERSION)$(ABIFLAGS).a - which in the end would be named similarly, libpython3.11.a, when $(LDLIBRARY) would be libpython3.11.dll.a. If the static library exists but the import library doesn't, then most modules would still fail to link, but a few ones wouldn't (select, _multiprocessing, _overlapped and _socket). The ones that did succeed linking with the static library would crash at runtime though. By making sure that the right, intended library to fulfill the linker parameter "-lpython3.11" exists before building the shared modules, we avoid the whole race condition that in some rare cases could produce a Python build that crashes at runtime. For Linux targets, this extra dependency is unnecessary, but should not cause other problems ($(LDLIBRARY) is set to the same as $(LIBRARY) if not building any shared library). This fixes MSYS2 cpython-mingw issue python#162.
lazka
pushed a commit
to lazka/cpython
that referenced
this pull request
Aug 25, 2024
When building shared modules (*.pyd) for MinGW, they link against the import library for the main python (e.g. -lpython3.11). When linking shared modules on Linux, this doesn't happen, but those shared libraries are linked with undefined references which then are fulfilled by the host process when they are loaded. Add a dependency to make sure that $(LDLIBRARY), e.g. libpython$(LDVERSION).dll.a, exists before starting to build the shared modules. Previously, if libpython$(LDVERSION).dll.a didn't exist when the shared modules were linked, some of them failed to link, but this wasn't reported as an error in the build, and a later invocation of setup.py would retry building them, which then would succeed. E.g. there was a seemingly benign race condition in the build. However, in some rare cases, the race condition no longer was benign. The build also produces a corresponding static library, $(LIBRARY), e.g. libpython$(VERSION)$(ABIFLAGS).a - which in the end would be named similarly, libpython3.11.a, when $(LDLIBRARY) would be libpython3.11.dll.a. If the static library exists but the import library doesn't, then most modules would still fail to link, but a few ones wouldn't (select, _multiprocessing, _overlapped and _socket). The ones that did succeed linking with the static library would crash at runtime though. By making sure that the right, intended library to fulfill the linker parameter "-lpython3.11" exists before building the shared modules, we avoid the whole race condition that in some rare cases could produce a Python build that crashes at runtime. For Linux targets, this extra dependency is unnecessary, but should not cause other problems ($(LDLIBRARY) is set to the same as $(LIBRARY) if not building any shared library). This fixes MSYS2 cpython-mingw issue python#162.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.
When given an invalid AIFF file,
aifc.opendoesn't clean up after itself. This patch makes it close the file object if it was opened by the library.Also, it adds one unit test,
test.aifc_test.AifcMiscTest.test_close_opened_files_on_error. The patch can be verified with./python -m test -j0 test_aifc.