Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix crash in PyIShellIconOverlayIdentifier::IsMemberOf with Python 3.12 #2466

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

Mscht
Copy link

@Mscht Mscht commented Jan 20, 2025

Hello,
we are currently migrating our application from Python 3.11 to 3.12 and encountered a crash (access violation) determining overlay images of files via the IShellIconOverlayIdentifier.
We found out that the crash can be fixed by simply moving the PyObject_FreeWChar() method after the PY_INTERFACE_POSTCALL, so GIL is aquired.
So from my understand, it is not allowed to do any memory deallocation on PyObjects without having the GIL. I found this "bad" pattern in some more places. I will create a second pull request with those changes, as I only tested the change of this pull request.

@geppi
Copy link
Contributor

geppi commented Jan 25, 2025

That's exactly the same pattern that caused issue #2415 which was fixed with PR #2417.

It looks like Python < 3.12 was more forgiving. It might have to do with the code changes in 3.12 to prepare for getting rid of the GIL. However, if you found other places with this pattern, it would be great if you could fix them in another PR.

@Mscht
Copy link
Author

Mscht commented Jan 26, 2025

Hi @geppi ,
I have created #2467 for this, as I only encountered and tested this code place (so only this one has priority for me ;-) )

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants