Skip to content

Conversation

@Mscht
Copy link
Contributor

@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
Collaborator

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
Contributor 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 ;-) )

@Avasam
Copy link
Collaborator

Avasam commented Mar 7, 2025

No changes after fixing conflicts (a single newline difference). This was included in https://github.com/mhammond/pywin32/pull/2467/files#diff-a19942c574a1cd9e2d9cf76408893d870a9c871d44d4a65b2bdf5ffdd0a43ec5
Thanks!

@Avasam Avasam closed this Mar 7, 2025
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.

4 participants