Skip to content

Conversation

@vstinner
Copy link
Member

@vstinnervstinner commented Apr 30, 2025

Replace _PyObject_GC_UNTRACK() with PyObject_GC_UnTrack() to not fail if the method was already untracked.

Replace _PyObject_GC_UNTRACK() with PyObject_GC_UnTrack() to not fail if the method was already untracked.
@vstinnervstinner changed the title gh-132280: Fix method_dealloc(): use PyObject_GC_UnTrack()gh-124715: Fix method_dealloc(): use PyObject_GC_UnTrack()Apr 30, 2025
@vstinner
Copy link
MemberAuthor

vstinner commented Apr 30, 2025

This change fix test_functools on s390x: #132280 (comment)

But I'm not sure why "Move trashcan mechanism into Py_Dealloc" requires this change.

cc @iritkatriel@markshannon@nascheme

@markshannon
Copy link
Member

markshannon commented Apr 30, 2025

But I'm not sure why "Move trashcan mechanism into Py_Dealloc" requires this change.

I don't see any reason either.
Is it just s390x showing this failure?

@vstinner
Copy link
MemberAuthor

Is it just s390x showing this failure?

s390x buildbot is fast. Other buildbots are still running. Maybe test_functools will fail on other buildbots, I don't know so far.

@vstinner
Copy link
MemberAuthor

Oh, I cannot reproduce the issue on s390x RHEL9 (GCC 11.5.0) nor on s390x Fedora Stable (GCC 14.2.1), only on s390x RHEL8 (GCC 8.5.0).

@vstinner
Copy link
MemberAuthor

vstinner commented May 1, 2025

s390x buildbot is fast. Other buildbots are still running. Maybe test_functools will fail on other buildbots, I don't know so far.

test_functools does also crash on:

@vstinner
Copy link
MemberAuthor

AMD64 Fedora Stable Clang 3.x: https://buildbot.python.org/#/builders/441/builds/7851

I confirm that test_functools does crash randomly when I build Python using clang on my laptop:

$ ./configure --with-pydebug CC=clang LD=clang $ make $ ./python -m test -v test_functools (...) test_recursive_pickle (test.test_functools.TestPartialPy.test_recursive_pickle) ... Objects/classobject.c:247: _PyObject_GC_UNTRACK: Assertion "_PyObject_GC_IS_TRACKED(((PyObject*)(op)))" failed: object not tracked by the garbage collector 

@vstinnervstinner merged commit 662dd29 into python:mainMay 1, 2025
43 checks passed
@vstinnervstinner deleted the method_dealloc branch May 1, 2025 11:42
@vstinner
Copy link
MemberAuthor

It seems like methods are special and can be untracked by something that I failed to identify when they enter the trashcan mechanism. I hope that only methods are treated in a special way and that other objects don't have to be modified for the recent trashcan change.

@markshannon
Copy link
Member

markshannon commented May 1, 2025

Does this fix all the buildbots?
If so, let's merge this but keep the issue open so we don't forget to investigate further.

@vstinner
Copy link
MemberAuthor

See also #133261 : test_frame crash randomly on RHEL8, but this time on x86-64.

@vstinner
Copy link
MemberAuthor

Does this fix all the buildbots?

Yes. Buildbots which are back to green:

  • s390x RHEL8 3.x
  • aarch64 Fedora Stable LTO 3.x
  • aarch64 Fedora Stable Clang 3.x
  • aarch64 Fedora Stable Clang Installed 3.x
  • aarch64 RHEL8 LTO + PGO 3.x
  • AMD64 Fedora Stable Clang 3.x

If so, let's merge this but keep the issue open so we don't forget to investigate further.

#124715 is still open.

vstinner added a commit to vstinner/cpython that referenced this pull request May 5, 2025
…k() (python#133199)" This reverts commit 662dd29. The root issue was fixed by the commit f554237.
vstinner added a commit that referenced this pull request May 5, 2025
Pranjal095 pushed a commit to Pranjal095/cpython that referenced this pull request Jul 12, 2025
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@vstinner@markshannon