Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Assertion failure with Python 3.14.0rc1 --enable-experimental-jit build #460

Copy link
Copy link
@mgorny

Description

@mgorny
Issue body actions

Reproduced with 3.14.0rc1 and python/cpython@38a42fe, built --with-pydebug --enable-experimental-jit (with #459 to make it build):

$ tox -e py314 -x testenv.base_python=$HOME/git/cpython/python -x testenv.set_env=GREENLET_SKIP_LEAKCHECKS=1
.pkg: _optional_hooks> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: get_requires_for_build_sdist> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: get_requires_for_build_wheel> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: get_requires_for_build_editable> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: build_wheel> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
.pkg: build_sdist> python /usr/lib/python3.14/site-packages/pyproject_api/_backend.py True setuptools.build_meta
py314: install_package> python -I -m pip install --force-reinstall --no-deps /tmp/greenlet/.tox/.tmp/package/9/greenlet-3.2.4.dev0.tar.gz
py314: commands[0]> python -c 'import greenlet._greenlet as G; assert G.GREENLET_USE_STANDARD_THREADING'
py314: commands[1]> python -m unittest discover -v greenlet.tests
test_break_ctxvars (greenlet.tests.test_contextvars.ContextVarsTests.test_break_ctxvars) ... ok
test_context_assignment_different_thread (greenlet.tests.test_contextvars.ContextVarsTests.test_context_assignment_different_thread) ... ok
test_context_assignment_while_running (greenlet.tests.test_contextvars.ContextVarsTests.test_context_assignment_while_running) ... ok
test_context_assignment_wrong_type (greenlet.tests.test_contextvars.ContextVarsTests.test_context_assignment_wrong_type) ... ok
test_context_not_propagated (greenlet.tests.test_contextvars.ContextVarsTests.test_context_not_propagated) ... ok
test_context_propagated_by_context_run (greenlet.tests.test_contextvars.ContextVarsTests.test_context_propagated_by_context_run) ... ok
test_context_propagated_by_setting_attribute (greenlet.tests.test_contextvars.ContextVarsTests.test_context_propagated_by_setting_attribute) ... ok
test_context_shared (greenlet.tests.test_contextvars.ContextVarsTests.test_context_shared) ... ok
test_not_broken_if_using_attribute_instead_of_context_run (greenlet.tests.test_contextvars.ContextVarsTests.test_not_broken_if_using_attribute_instead_of_context_run) ... ok
test_contextvars_errors (greenlet.tests.test_contextvars.NoContextVarsTests.test_contextvars_errors) ... skipped 'ContextVar supported'
test_exception_switch (greenlet.tests.test_cpp.CPPTests.test_exception_switch) ... ok
test_unhandled_exception_in_greenlet_aborts (greenlet.tests.test_cpp.CPPTests.test_unhandled_exception_in_greenlet_aborts) ... ok
test_unhandled_nonstd_exception_aborts (greenlet.tests.test_cpp.CPPTests.test_unhandled_nonstd_exception_aborts) ... ok
test_unhandled_std_exception_aborts (greenlet.tests.test_cpp.CPPTests.test_unhandled_std_exception_aborts) ... ok
test_unhandled_std_exception_as_greenlet_function_aborts (greenlet.tests.test_cpp.CPPTests.test_unhandled_std_exception_as_greenlet_function_aborts) ... ok
test_getcurrent (greenlet.tests.test_extension_interface.CAPITests.test_getcurrent) ... ok
test_instance_of_wrong_type (greenlet.tests.test_extension_interface.CAPITests.test_instance_of_wrong_type) ... ok
test_new_greenlet (greenlet.tests.test_extension_interface.CAPITests.test_new_greenlet) ... ok
test_non_traceback_param (greenlet.tests.test_extension_interface.CAPITests.test_non_traceback_param) ... ok
test_not_throwable (greenlet.tests.test_extension_interface.CAPITests.test_not_throwable) ... ok
test_raise_greenlet_dead (greenlet.tests.test_extension_interface.CAPITests.test_raise_greenlet_dead) ... ok
test_raise_greenlet_error (greenlet.tests.test_extension_interface.CAPITests.test_raise_greenlet_error) ... ok
test_setparent (greenlet.tests.test_extension_interface.CAPITests.test_setparent) ... ok
test_switch (greenlet.tests.test_extension_interface.CAPITests.test_switch) ... ok
test_switch_kwargs (greenlet.tests.test_extension_interface.CAPITests.test_switch_kwargs) ... ok
test_throw (greenlet.tests.test_extension_interface.CAPITests.test_throw) ... ok
test_circular_greenlet (greenlet.tests.test_gc.GCTests.test_circular_greenlet) ... ok
test_dead_circular_ref (greenlet.tests.test_gc.GCTests.test_dead_circular_ref) ... ok
test_finalizer_crash (greenlet.tests.test_gc.GCTests.test_finalizer_crash) ... ok
test_inactive_ref (greenlet.tests.test_gc.GCTests.test_inactive_ref) ... ok
test_generator (greenlet.tests.test_generator.GeneratorTests.test_generator) ... ok
test_genlet_bad (greenlet.tests.test_generator_nested.NestedGeneratorTests.test_genlet_bad) ... ok
test_genlet_simple (greenlet.tests.test_generator_nested.NestedGeneratorTests.test_genlet_simple) ... ok
test_layered_genlets (greenlet.tests.test_generator_nested.NestedGeneratorTests.test_layered_genlets) ... ok
test_nested_genlets (greenlet.tests.test_generator_nested.NestedGeneratorTests.test_nested_genlets) ... ok
test_permutations (greenlet.tests.test_generator_nested.NestedGeneratorTests.test_permutations) ... ok
test_failed_to_initialstub (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_failed_to_initialstub) ... ok
test_failed_to_slp_switch_into_running (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_failed_to_slp_switch_into_running) ... ok
test_failed_to_switch_into_running (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_failed_to_switch_into_running) ... ok
test_reentrant_switch_GreenletAlreadyStartedInPython (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_reentrant_switch_GreenletAlreadyStartedInPython) ... ok
test_reentrant_switch_run_callable_has_del (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_reentrant_switch_run_callable_has_del) ... ok
test_reentrant_switch_three_greenlets (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_reentrant_switch_three_greenlets) ... ok
test_reentrant_switch_three_greenlets2 (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_reentrant_switch_three_greenlets2) ... ok
test_reentrant_switch_two_greenlets (greenlet.tests.test_greenlet.TestBrokenGreenlets.test_reentrant_switch_two_greenlets) ... ok
test_abstract_subclasses (greenlet.tests.test_greenlet.TestGreenlet.test_abstract_subclasses) ... ok
test_can_access_f_back_of_suspended_greenlet (greenlet.tests.test_greenlet.TestGreenlet.test_can_access_f_back_of_suspended_greenlet) ... ok
test_dealloc (greenlet.tests.test_greenlet.TestGreenlet.test_dealloc) ... ok
test_dealloc_catches_GreenletExit_throws_other (greenlet.tests.test_greenlet.TestGreenlet.test_dealloc_catches_GreenletExit_throws_other) ... ok
test_dealloc_other_thread (greenlet.tests.test_greenlet.TestGreenlet.test_dealloc_other_thread) ... ok
test_dealloc_switch_args_not_lost (greenlet.tests.test_greenlet.TestGreenlet.test_dealloc_switch_args_not_lost) ... ok
test_deepcopy (greenlet.tests.test_greenlet.TestGreenlet.test_deepcopy) ... ok
test_exc_state (greenlet.tests.test_greenlet.TestGreenlet.test_exc_state) ... ok
test_exception (greenlet.tests.test_greenlet.TestGreenlet.test_exception) ... ok
test_falling_off_end_switches_to_unstarted_parent_raises_error (greenlet.tests.test_greenlet.TestGreenlet.test_falling_off_end_switches_to_unstarted_parent_raises_error) ... ok
test_falling_off_end_switches_to_unstarted_parent_works (greenlet.tests.test_greenlet.TestGreenlet.test_falling_off_end_switches_to_unstarted_parent_works) ... ok
test_frame (greenlet.tests.test_greenlet.TestGreenlet.test_frame) ... ok
test_frames_always_exposed (greenlet.tests.test_greenlet.TestGreenlet.test_frames_always_exposed) ... ok
test_get_stack_with_nested_c_calls (greenlet.tests.test_greenlet.TestGreenlet.test_get_stack_with_nested_c_calls) ... ok
test_implicit_parent_with_threads (greenlet.tests.test_greenlet.TestGreenlet.test_implicit_parent_with_threads) ... ok
test_instance_dict (greenlet.tests.test_greenlet.TestGreenlet.test_instance_dict) ... ok
test_issue_245_reference_counting_subclass_no_threads (greenlet.tests.test_greenlet.TestGreenlet.test_issue_245_reference_counting_subclass_no_threads) ... ok
test_issue_245_reference_counting_subclass_threads (greenlet.tests.test_greenlet.TestGreenlet.test_issue_245_reference_counting_subclass_threads) ... ok
test_parent_equals_None (greenlet.tests.test_greenlet.TestGreenlet.test_parent_equals_None) ... ok
test_parent_restored_on_kill (greenlet.tests.test_greenlet.TestGreenlet.test_parent_restored_on_kill) ... ok
test_parent_return_failure (greenlet.tests.test_greenlet.TestGreenlet.test_parent_return_failure) ... ok
test_recursive_startup (greenlet.tests.test_greenlet.TestGreenlet.test_recursive_startup) ... ok
test_run_equals_None (greenlet.tests.test_greenlet.TestGreenlet.test_run_equals_None) ... ok
test_running_greenlet_has_no_run (greenlet.tests.test_greenlet.TestGreenlet.test_running_greenlet_has_no_run) ... ok
test_send_exception (greenlet.tests.test_greenlet.TestGreenlet.test_send_exception) ... ok
test_simple (greenlet.tests.test_greenlet.TestGreenlet.test_simple) ... ok
test_switch_kwargs (greenlet.tests.test_greenlet.TestGreenlet.test_switch_kwargs) ... ok
test_switch_kwargs_to_parent (greenlet.tests.test_greenlet.TestGreenlet.test_switch_kwargs_to_parent) ... ok
test_switch_no_run_raises_AttributeError (greenlet.tests.test_greenlet.TestGreenlet.test_switch_no_run_raises_AttributeError) ... ok
test_switch_to_another_thread (greenlet.tests.test_greenlet.TestGreenlet.test_switch_to_another_thread) ... ok
test_switch_to_dead_greenlet_reparent (greenlet.tests.test_greenlet.TestGreenlet.test_switch_to_dead_greenlet_reparent) ... ok
test_switch_to_dead_greenlet_with_unstarted_perverse_parent (greenlet.tests.test_greenlet.TestGreenlet.test_switch_to_dead_greenlet_with_unstarted_perverse_parent) ... ok
test_thread_bug (greenlet.tests.test_greenlet.TestGreenlet.test_thread_bug) ... ok
test_threaded_updatecurrent (greenlet.tests.test_greenlet.TestGreenlet.test_threaded_updatecurrent) ... ok
test_threads (greenlet.tests.test_greenlet.TestGreenlet.test_threads) ... ok
test_throw_exception_not_lost (greenlet.tests.test_greenlet.TestGreenlet.test_throw_exception_not_lost) ... ok
test_throw_no_run_raises_AttributeError (greenlet.tests.test_greenlet.TestGreenlet.test_throw_no_run_raises_AttributeError) ... ok
test_throw_to_dead_thread_doesnt_crash (greenlet.tests.test_greenlet.TestGreenlet.test_throw_to_dead_thread_doesnt_crash) ... ok
test_throw_to_dead_thread_doesnt_crash_wait (greenlet.tests.test_greenlet.TestGreenlet.test_throw_to_dead_thread_doesnt_crash_wait) ... Time limit exceeded.
Threads: Waiting for only 1 --> 1
MGlets : Waiting for only 2 --> 3
ok
test_tuple_subclass (greenlet.tests.test_greenlet.TestGreenlet.test_tuple_subclass) ... ok
test_two_children (greenlet.tests.test_greenlet.TestGreenlet.test_two_children) ... ok
test_two_recursive_children (greenlet.tests.test_greenlet.TestGreenlet.test_two_recursive_children) ... ok
test_cannot_delete_parent (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_cannot_delete_parent) ... ok
test_cannot_delete_parent_of_main (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_cannot_delete_parent_of_main) ... ok
test_deeper_cycle (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_deeper_cycle) ... ok
test_main_greenlet_parent_is_none (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_main_greenlet_parent_is_none) ... ok
test_set_parent_wrong_types (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_set_parent_wrong_types) ... ok
test_threaded_reparent (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_threaded_reparent) ... ok
test_trivial_cycle (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_trivial_cycle) ... ok
test_trivial_cycle_main (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_trivial_cycle_main) ... ok
test_unexpected_reparenting (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_unexpected_reparenting) ... ok
test_unexpected_reparenting_thread_running (greenlet.tests.test_greenlet.TestGreenletSetParentErrors.test_unexpected_reparenting_thread_running) ... ok
test_main_greenlet_is_greenlet (greenlet.tests.test_greenlet.TestMainGreenlet.test_main_greenlet_is_greenlet) ... ok
test_main_greenlet_type_can_be_subclassed (greenlet.tests.test_greenlet.TestMainGreenlet.test_main_greenlet_type_can_be_subclassed) ... ok
test_dead (greenlet.tests.test_greenlet.TestRepr.test_dead) ... ok
test_formatting_produces_native_str (greenlet.tests.test_greenlet.TestRepr.test_formatting_produces_native_str) ... ok
test_initial (greenlet.tests.test_greenlet.TestRepr.test_initial) ... ok
test_main_from_other_thread (greenlet.tests.test_greenlet.TestRepr.test_main_from_other_thread) ... ok
test_main_in_background (greenlet.tests.test_greenlet.TestRepr.test_main_in_background) ... ok
test_main_while_running (greenlet.tests.test_greenlet.TestRepr.test_main_while_running) ... ok
test_it (greenlet.tests.test_greenlet_trash.TestTrashCanReEnter.test_it) ... skipped 'get_tstate_trash_delete_nesting is not available.'
test_arg_refs (greenlet.tests.test_leaks.TestLeaks.test_arg_refs) ... ok
test_issue251_issue252_explicit_reference_not_collectable (greenlet.tests.test_leaks.TestLeaks.test_issue251_issue252_explicit_reference_not_collectable) ... ok
test_issue251_issue252_need_to_collect_in_background (greenlet.tests.test_leaks.TestLeaks.test_issue251_issue252_need_to_collect_in_background) ... ok
test_issue251_issue252_need_to_collect_in_background_cleanup_disabled (greenlet.tests.test_leaks.TestLeaks.test_issue251_issue252_need_to_collect_in_background_cleanup_disabled) ... ok
test_issue251_killing_cross_thread_leaks_list (greenlet.tests.test_leaks.TestLeaks.test_issue251_killing_cross_thread_leaks_list) ... ok
test_issue251_with_cleanup_disabled (greenlet.tests.test_leaks.TestLeaks.test_issue251_with_cleanup_disabled) ... ok
test_kwarg_refs (greenlet.tests.test_leaks.TestLeaks.test_kwarg_refs) ... ok
test_threaded_adv_leak (greenlet.tests.test_leaks.TestLeaks.test_threaded_adv_leak) ... ok
test_threaded_leak (greenlet.tests.test_leaks.TestLeaks.test_threaded_leak) ... ok
test_untracked_memory_doesnt_increase (greenlet.tests.test_leaks.TestLeaks.test_untracked_memory_doesnt_increase) ... ok
test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_main (greenlet.tests.test_leaks.TestLeaks.test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_main) ... Time limit exceeded.
Threads: Waiting for only 1 --> 1
MGlets : Waiting for only 3 --> 6
Time limit exceeded.
Threads: Waiting for only 1 --> 1
MGlets : Waiting for only 3 --> 6
ok
test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_thread (greenlet.tests.test_leaks.TestLeaks.test_untracked_memory_doesnt_increase_unfinished_thread_dealloc_in_thread) ... python: Python/generated_cases.c.h:12469: _PyEval_EvalFrameDefault: Assertion `tstate->current_executor == NULL' failed.
py314: exit -6 (11.81 seconds) /tmp/greenlet> python -m unittest discover -v greenlet.tests pid=534121
  py314: FAIL code -6 (21.75=setup[9.90]+cmd[0.04,11.81] seconds)
  evaluation failed :( (21.93 seconds)
(gdb) bt
#0  0x00007ff07de37dbc in ?? () from /usr/lib64/libc.so.6
#1  0x00007ff07dddf8e6 in raise () from /usr/lib64/libc.so.6
#2  0x00007ff07ddc734b in abort () from /usr/lib64/libc.so.6
#3  0x00007ff07ddc72b5 in ?? () from /usr/lib64/libc.so.6
#4  0x00005563151e625c in _PyEval_EvalFrameDefault (tstate=<optimized out>, frame=<optimized out>, throwflag=0)
    at Python/generated_cases.c.h:12469
#5  0x00005563151e63d3 in _PyEval_EvalFrame (tstate=tstate@entry=0x5563278dc2b0, frame=frame@entry=0x7ff0343b8020, 
    throwflag=throwflag@entry=0) at ./Include/internal/pycore_ceval.h:119
#6  0x00005563151e65a4 in _PyEval_Vector (tstate=0x5563278dc2b0, func=0x7ff07c41b1d0, locals=locals@entry=0x0, 
    args=0x556315674cd8 <_PyRuntime+106648>, argcount=<optimized out>, kwnames=0x0) at Python/ceval.c:1961
#7  0x000055631507cb70 in _PyFunction_Vectorcall (func=<optimized out>, stack=<optimized out>, nargsf=<optimized out>, 
    kwnames=<optimized out>) at Objects/call.c:413
#8  0x000055631507e865 in _PyVectorcall_Call (tstate=tstate@entry=0x5563278dc2b0, func=0x55631507cb18 <_PyFunction_Vectorcall>, 
    callable=callable@entry=0x7ff07c41b1d0, tuple=tuple@entry=0x556315674cb8 <_PyRuntime+106616>, kwargs=kwargs@entry=0x0)
    at Objects/call.c:273
#9  0x000055631507eae1 in _PyObject_Call (tstate=0x5563278dc2b0, callable=0x7ff07c41b1d0, args=0x556315674cb8 <_PyRuntime+106616>, 
    kwargs=0x0) at Objects/call.c:348
#10 0x000055631507eb1d in PyObject_Call (callable=<optimized out>, args=<optimized out>, kwargs=<optimized out>) at Objects/call.c:373
#11 0x00007ff07cbd180d in greenlet::UserGreenlet::inner_bootstrap (this=this@entry=0x7ff0349a9d80, origin_greenlet=<optimized out>, 
    run=0x7ff07c41b1d0) at src/greenlet/greenlet_refs.hpp:192
#12 0x00007ff07cbd21c9 in greenlet::UserGreenlet::g_initialstub (this=0x7ff0349a9d80, mark=0x7ff079af8d28)
    at src/greenlet/TUserGreenlet.cpp:305
#13 0x00007ff07cbd13d2 in greenlet::UserGreenlet::g_switch (this=0x7ff0349a9d80) at src/greenlet/TUserGreenlet.cpp:173
#14 0x0000556315674cb8 in _PyRuntime ()
#15 0x0000556315674cb8 in _PyRuntime ()
#16 0x00007ff07c5b9580 in ?? ()
#17 0x00007ff079af8df0 in ?? ()
#18 0x00005563150cc2a3 in _PyObject_StoreInstanceAttribute (obj=0x5563150cc062 <store_instance_attr_lock_held+482>, 
    name=0x7ff07c583b80, value=0x7ff079af8df0) at Objects/dictobject.c:7037
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

I've skipped leak checks to avoid the noise from #455, but the crash happens both with and without them.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      Morty Proxy This is a proxified and sanitized view of the page, visit original site.