GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — gh-118846: Fix free-threading test failures when run sequentially by colesbury · Pull Request #118864 · python/cpython

Conversation

@colesbury

@colesbury colesbury commented May 9, 2024 •
edited by bedevere-app Bot
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

The free-threaded build currently immortalizes some objects once the first thread is started. This can lead to test failures depending on the order in which tests are run. This PR addresses those failures by suppressing immortalization or skipping the affected tests.

  • Issue: Freethreading build fails -m test --pgo: test_ordered_dict and test_struct failed #118846

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@colesbury
pythongh-118846: Fix free-threading test failures when run sequentially
852175f
The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
@colesbury colesbury added tests Tests in the Lib/test dir topic-free-threading needs backport to 3.13 only security fixes labels May 9, 2024
@colesbury
colesbury requested a review from DinoV May 9, 2024 19:31
@colesbury
colesbury requested review from ericsnowcurrently, gvanrossum and markshannon as code owners May 9, 2024 19:31
@bedevere-app bedevere-app Bot added the awaiting core review label May 9, 2024
@bedevere-app bedevere-app Bot mentioned this pull request May 9, 2024
Freethreading build fails -m test --pgo: test_ordered_dict and test_struct failed #118846
Closed
@colesbury colesbury added the skip news label May 9, 2024
@colesbury

colesbury commented May 9, 2024

Copy link
Copy Markdown
Contributor Author

@hroncok - this should address the remaining test failures in conjunction with #118862

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

DinoV
DinoV approved these changes May 9, 2024
View reviewed changes

@DinoV DinoV left a comment

Copy link
Copy Markdown
Contributor

There was a problem hiding this comment.

Choose a reason for hiding this comment

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

LGTM!

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@bedevere-app bedevere-app Bot added awaiting merge and removed awaiting core review labels May 9, 2024
@hroncok

hroncok commented May 9, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Contributor

I still have:

======================================================================
ERROR: test_builtin_with_more_than_four_children (test.test_pydoc.test_pydoc.PydocDocTest.test_builtin_with_more_than_four_children)
Tests help on builtin object which have more than four child classes.
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_pydoc/test_pydoc.py", line 537, in test_builtin_with_more_than_four_children
    text = doc.docclass(object)
  File ".../cpython/Lib/pydoc.py", line 1424, in docclass
    subclasses = sorted(
        (str(cls.__name__) for cls in type.__subclasses__(object)
         if not cls.__name__.startswith("_") and cls.__module__ == "builtins"),
        key=str.lower
    )
  File ".../cpython/Lib/pydoc.py", line 1426, in <genexpr>
    if not cls.__name__.startswith("_") and cls.__module__ == "builtins"),
                                            ^^^^^^^^^^^^^^
  File ".../cpython/Lib/test/test_inspect/test_inspect.py", line 775, in __module__
    raise AttributeError
AttributeError: . Did you mean: '__reduce__'?

----------------------------------------------------------------------
Ran 108 tests in 1.709s

FAILED (errors=1, skipped=3)
test test.test_pydoc.test_pydoc failed


======================================================================
FAIL: test_bug1055820c (test.test_gc.GCTogglingTests.test_bug1055820c)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_gc.py", line 1361, in test_bug1055820c
    self.fail("gc didn't happen after 10000 iterations")
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: gc didn't happen after 10000 iterations

======================================================================
FAIL: test_bug1055820d (test.test_gc.GCTogglingTests.test_bug1055820d)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/contextlib.py", line 85, in inner
    return func(*args, **kwds)
  File ".../cpython/Lib/test/test_gc.py", line 1429, in test_bug1055820d
    self.fail("gc didn't happen after 10000 iterations")
    ~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: gc didn't happen after 10000 iterations

----------------------------------------------------------------------
Ran 49 tests in 14.476s

FAILED (failures=2, skipped=4)
test test_gc failed

Not sure if the pydoc thing is related, but the gc might.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@colesbury
Merge branch 'main' into pythongh-118846-all-tests
923dd2d
@colesbury

colesbury commented May 9, 2024

Copy link
Copy Markdown
Contributor Author

The pydoc failure is a funny interaction between tests. In test_inspect.py, we create a class that raises an error when you access __module__:

cpython/Lib/test/test_inspect/test_inspect.py

Lines 771 to 775 in 98ff3f6

def test_getfile_class_without_module(self):
class CM(type):
@property
def __module__(cls):
raise AttributeError

In the free-threaded build, this class is now immortalized so it's still alive later on when test_pydoc tries to generate the pydoc for all subclasses of object.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

colesbury added 2 commits May 9, 2024 22:21
@colesbury
Fix test_pydoc failure
f469a2e
@colesbury
Fix test_gc when run sequentially
0c0c9b4
@colesbury

colesbury commented May 10, 2024

Copy link
Copy Markdown
Contributor Author

Ok, I think the test_pydoc and test_gc failures are fixed now too.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@colesbury
colesbury merged commit b309c8e into python:main May 10, 2024
@colesbury
colesbury deleted the gh-118846-all-tests branch May 10, 2024 20:29
@bedevere-app bedevere-app Bot removed the awaiting merge label May 10, 2024
@miss-islington-app

miss-islington-app Bot commented May 10, 2024

Copy link
Copy Markdown

Thanks @colesbury for the PR 🌮🎉.. I'm working now to backport this PR to: 3.13.
🐍🍒⛏🤖

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

miss-islington pushed a commit to miss-islington/cpython that referenced this pull request May 10, 2024
@colesbury @miss-islington
pythongh-118846: Fix free-threading test failures when run sequential…
305f67e
…ly (pythonGH-118864)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
(cherry picked from commit b309c8e)

Co-authored-by: Sam Gross <[email protected]>
@bedevere-app

bedevere-app Bot commented May 10, 2024

Copy link
Copy Markdown

GH-118927 is a backport of this pull request to the 3.13 branch.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@bedevere-app bedevere-app Bot removed the needs backport to 3.13 only security fixes label May 10, 2024
colesbury added a commit that referenced this pull request May 10, 2024
@miss-islington @colesbury
[3.13] gh-118846: Fix free-threading test failures when run sequentia…
cceb758
…lly (GH-118864) (#118927)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
(cherry picked from commit b309c8e)

Co-authored-by: Sam Gross <[email protected]>
@hroncok

hroncok commented May 10, 2024

Copy link
Copy Markdown
Contributor

This is the only one I got now:

======================================================================
ERROR: test_expr_context (test.test_ast.ASTConstructorTests.test_expr_context)
----------------------------------------------------------------------
Traceback (most recent call last):
  File ".../cpython/Lib/test/test_ast.py", line 3042, in test_expr_context
    self.assertIsInstance(name.ctx, ast.Load)
                          ^^^^^^^^
AttributeError: 'Name' object has no attribute 'ctx'

----------------------------------------------------------------------
Ran 175 tests in 0.765s

FAILED (errors=1, skipped=1)
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@colesbury

colesbury commented May 10, 2024

Copy link
Copy Markdown
Contributor Author

Just checking, this is from ./python -m test -W on the 3.13 branch? Is it a debug build?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@AlexWaygood

AlexWaygood commented May 10, 2024

Copy link
Copy Markdown
Member

Note that that AST test was only merged (and backported to 3.13) yesterday in #118854

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@hroncok

hroncok commented May 11, 2024

Copy link
Copy Markdown
Contributor

I might have git pulled but forgot to rebuild it. Mea culpa. Trying fresh.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@hroncok

hroncok commented May 11, 2024

Copy link
Copy Markdown
Contributor

All is good now, thank you!

AlexWaygood reacted with hooray emoji AlexWaygood reacted with heart emoji
All reactions
  • 🎉 1 reaction
  • ❤️ 1 reaction

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@JelleZijlstra JelleZijlstra mentioned this pull request May 28, 2024
backport a9a74da 3.13 #119642
Closed
estyxx pushed a commit to estyxx/cpython that referenced this pull request Jul 17, 2024
@colesbury @estyxx
pythongh-118846: Fix free-threading test failures when run sequential…
b1970ec
…ly (python#118864)

The free-threaded build currently immortalizes some objects once the
first thread is started. This can lead to test failures depending on the
order in which tests are run. This PR addresses those failures by
suppressing immortalization or skipping the affected tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@DinoV DinoV DinoV approved these changes
@ericsnowcurrently ericsnowcurrently Awaiting requested review from ericsnowcurrently ericsnowcurrently is a code owner
@markshannon markshannon Awaiting requested review from markshannon markshannon is a code owner
@gvanrossum gvanrossum Awaiting requested review from gvanrossum

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

skip news tests Tests in the Lib/test dir topic-free-threading

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

4 participants

@colesbury @hroncok @AlexWaygood @DinoV
Add this suggestion to a batch that can be applied as a single commit.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.Add this suggestion to a batch that can be applied as a single commit.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.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.