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

gh-104456: Fix ref leak in _ctypes.COMError #104457

Merged
merged 5 commits into from
May 14, 2023

Conversation

Eclips4
Copy link
Member

@Eclips4 Eclips4 commented May 13, 2023

@Eclips4
Copy link
Member Author

Eclips4 commented May 13, 2023

Seems that related to #104020
@erlend-aasland

@AlexWaygood AlexWaygood added the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label May 13, 2023
@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @AlexWaygood for commit 8dbad09 🤖

If you want to schedule another build, you need to add the 🔨 test-with-refleak-buildbots label again.

@bedevere-bot bedevere-bot removed the 🔨 test-with-refleak-buildbots Test PR w/ refleak buildbots; report in status section label May 13, 2023
@Eclips4
Copy link
Member Author

Eclips4 commented May 13, 2023

Thanks Alex for the buildbots start. But, no one from buildbots use a windows system.
In issue I've mentioned that this refleak only reproducible on Windows, because COMError exist only on Windows.
So... buildbots can't catch this refleak :(
However, maybe add a one buildbot with windows system to buildbots ecosystem? I think it's will be useful.
(of course, this should be a another issue)

@AlexWaygood
Copy link
Member

!buildbot Windows.*Refleak

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @AlexWaygood for commit 8dbad09 🤖

The command will test the builders whose names match following regular expression: Windows.*Refleak

The builders matched are:

@AlexWaygood
Copy link
Member

!buildbot .*Windows.Refleak.

@bedevere-bot
Copy link

🤖 New build scheduled with the buildbot fleet by @AlexWaygood for commit 8dbad09 🤖

The command will test the builders whose names match following regular expression: .*Windows.*Refleak.*

The builders matched are:

Copy link
Contributor

@erlend-aasland erlend-aasland left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please add a Py_tp_clear slot and do the work there. You can call that function from dealloc. Also, the traverse function must be updated similarly.

@bedevere-bot
Copy link

A Python core developer has requested some changes be made to your pull request before we can consider merging it. If you could please address their requests along with any other requests in other reviews from core developers that would be appreciated.

Once you have made the requested changes, please leave a comment on this pull request containing the phrase I have made the requested changes; please review again. I will then notify any core developers who have left a review that you're ready for them to take another look at this pull request.

@erlend-aasland
Copy link
Contributor

Also, in dealloc we first untrack from GC, then we clear.

@Eclips4
Copy link
Member Author

Eclips4 commented May 13, 2023

I have made the requested changes; please review again

@bedevere-bot
Copy link

Thanks for making the requested changes!

@erlend-aasland: please review the changes made to this pull request.

@erlend-aasland
Copy link
Contributor

I left some more remarks. I'll follow this up tomorrow.

Eclips4 and others added 2 commits May 14, 2023 01:53
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
@sunmy2019
Copy link
Member

Could you let me know if you've confirmed the error is fixed on Windows? @Eclips4

@Eclips4
Copy link
Member Author

Eclips4 commented May 14, 2023

Could you let me know if you've confirmed the error is fixed on Windows? @Eclips4

Yeah, refleak are gone:

 ./python -m test -R 3:3 test_ctypes
Running Debug|x64 interpreter...
0:00:00 Run tests sequentially
0:00:00 [1/1] test_ctypes
beginning 6 repetitions
123456
a=5, b=10, c=15
a=5, b=10, c=15
.a=5, b=10, c=15
a=5, b=10, c=15
.a=5, b=10, c=15
a=5, b=10, c=15
.a=5, b=10, c=15
a=5, b=10, c=15
.a=5, b=10, c=15
a=5, b=10, c=15
.a=5, b=10, c=15
a=5, b=10, c=15
.
test_ctypes passed in 31.2 sec

== Tests result: SUCCESS ==

1 test OK.

Total duration: 31.3 sec
Tests result: SUCCESS

Also, thanks for your help!

@erlend-aasland erlend-aasland changed the title gh-104456: Fix ref leak in test_ctypes gh-104456: Fix ref leak in _ctypes.COMError May 14, 2023
@erlend-aasland
Copy link
Contributor

Thanks!

@erlend-aasland erlend-aasland merged commit 2cd1c87 into python:main May 14, 2023
@Eclips4 Eclips4 deleted the issue-104456 branch May 14, 2023 21:16
carljm added a commit to carljm/cpython that referenced this pull request May 15, 2023
* main: (29 commits)
  pythongh-101819: Fix _io clinic input for unused base class method stubs (python#104418)
  pythongh-101819: Isolate `_io` (python#101948)
  Bump mypy from 1.2.0 to 1.3.0 in /Tools/clinic (python#104501)
  pythongh-104494: Update certain Tkinter pack/place tests for Tk 8.7 errors (python#104495)
  pythongh-104050: Run mypy on `clinic.py` in CI (python#104421)
  pythongh-104490: Consistently define phony make targets (python#104491)
  pythongh-67056: document that registering/unregistering an atexit func from within an atexit func is undefined (python#104473)
  pythongh-104487: PYTHON_FOR_REGEN must be minimum Python 3.10 (python#104488)
  pythongh-101282: move BOLT config after PGO (pythongh-104493)
  pythongh-104469 Convert _testcapi/float.c to use AC (pythongh-104470)
  pythongh-104456: Fix ref leak in _ctypes.COMError (python#104457)
  pythongh-98539: Make _SSLTransportProtocol.abort() safe to call when closed (python#104474)
  pythongh-104337: Clarify random.gammavariate doc entry  (python#104410)
  Minor improvements to typing docs (python#104465)
  pythongh-87092: avoid gcc warning on uninitialized struct field in assemble.c (python#104460)
  pythonGH-71383: IDLE - Document testing subsets of modules (python#104463)
  pythongh-104454: Fix refleak in AttributeError_reduce (python#104455)
  pythongh-75710: IDLE - add docstrings and comments to editor module (python#104446)
  pythongh-91896: Revert some very noisy DeprecationWarnings for `ByteString` (python#104424)
  Add a mention of PYTHONBREAKPOINT to breakpoint() docs (python#104430)
  ...
carljm added a commit to carljm/cpython that referenced this pull request May 15, 2023
* main: (204 commits)
  pythongh-101819: Fix _io clinic input for unused base class method stubs (python#104418)
  pythongh-101819: Isolate `_io` (python#101948)
  Bump mypy from 1.2.0 to 1.3.0 in /Tools/clinic (python#104501)
  pythongh-104494: Update certain Tkinter pack/place tests for Tk 8.7 errors (python#104495)
  pythongh-104050: Run mypy on `clinic.py` in CI (python#104421)
  pythongh-104490: Consistently define phony make targets (python#104491)
  pythongh-67056: document that registering/unregistering an atexit func from within an atexit func is undefined (python#104473)
  pythongh-104487: PYTHON_FOR_REGEN must be minimum Python 3.10 (python#104488)
  pythongh-101282: move BOLT config after PGO (pythongh-104493)
  pythongh-104469 Convert _testcapi/float.c to use AC (pythongh-104470)
  pythongh-104456: Fix ref leak in _ctypes.COMError (python#104457)
  pythongh-98539: Make _SSLTransportProtocol.abort() safe to call when closed (python#104474)
  pythongh-104337: Clarify random.gammavariate doc entry  (python#104410)
  Minor improvements to typing docs (python#104465)
  pythongh-87092: avoid gcc warning on uninitialized struct field in assemble.c (python#104460)
  pythonGH-71383: IDLE - Document testing subsets of modules (python#104463)
  pythongh-104454: Fix refleak in AttributeError_reduce (python#104455)
  pythongh-75710: IDLE - add docstrings and comments to editor module (python#104446)
  pythongh-91896: Revert some very noisy DeprecationWarnings for `ByteString` (python#104424)
  Add a mention of PYTHONBREAKPOINT to breakpoint() docs (python#104430)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants