-
Notifications
You must be signed in to change notification settings - Fork 261
Closed
Description
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
Labels
No labels