Skip to content

Carry jf_savedata through guard resume; drop the vable identity override - #1983

Merged
youknowone merged 2 commits into
mainfrom
fib_recursive
Sep 26, 2026
Merged

youknowone merged 2 commits into
mainfrom
fib_recursive

Conversation

@youknowone

Copy link
Copy Markdown
Owner

Summary

Two commits on main.

Carry jf_savedata through guard resume; drop the vable identity override

  • Identity: resume.rs consume_vable_info is resume.py's again. It reads the identity with next_ref() and asserts get_total_size(virtualizable) == vable_size - 1.
    • Removed: the identity_override argument, the NULLREF substitution in next_ref_for_resume_slot, the JitState::blackhole_virtualizable_identity hook, and MAJIT_LEAF3_PROV.
  • patch_new_loop_to_load_virtualizable_fields: it no longer returns early when inputargs is no longer than the red prefix. compile.py has no such return.
  • GUARD_NOT_FORCED_2:
    • cranelift records the force spill locations on the descr (assembler.py store_info_on_descr), keeps slot 0 for FINISH's result, and adds the guard's Ref spills to FINISH's gcmap.
    • dynasm routes the guard through consider_guard_not_forced_2_j2.
    • The dynasm raw exit returns jf_savedata (llmodel.py get_savedata_ref) instead of None.
  • jf_savedata rooting: handle_fail, resume_in_blackhole_from_exit_layout, wasm_ca_resume_deopt and handle_async_forcing root the copied word with DeadFrameRefRoots across their allocations and read it back.
  • Trace::get_iter_for_optimizer: seeds ByteTraceIter from InputArg copies that carry the InputArgRc types and values.

Abort BC_NEW_ARRAY when a typed allocation returns null

A typed array descr (type_id != 0) now aborts the trace when alloc_oldgen_typed returns 0. The raw malloc fallback stays only for type_id == 0. This is the #1944 CodeRabbit finding on dispatch.rs.

History

The first commit replaces an earlier "Port leftover=[] GETFIELD and AllVirtuals" that never landed on main.

  • What it had: a parity audit found 29 pyre-only deviations. They included fixture-specific (baked, path) abort tuples in place of assert i == len(inputargs), pyre→majit listiter/str predicate callbacks, an EC-top scan frame in TLS, a savedata TLS hold, a skip-if-unchanged gen_store_back_in_vable, and soft misses in place of hard errors.
  • What happened to them: they were removed and the upstream shapes restored. With them in place, pyre/check.py failed 58 / 58 / 57 rows (dynasm / cranelift / wasm), including a synth/generator_body_loop crash from the partial store-back.
  • Other folded commits: two majit-gc commits that cancelled each other were dropped.

Fold census: spec_folds! 87 → 87, try_walker_specialize_ 77 → 77.

Not addressed: the #1944 Codex finding on borrowed [u8; N] layout. The same Rust type has two layouts: a ctor local is a length-prefixed GcArray, and an inline field is headerless. Declining the graph when a borrow's layout disagrees would decline 1669 graphs and make hot loops time out. It needs a slice representation change instead.

Test plan

Run locally on the same two commits based on 17c8884acc7:

  • python3 scripts/extract-llbc.py
  • cargo test --all --no-default-features --features dynasm
  • cargo test -p majit-backend-wasm
  • pyre/extra_tests/parity_tests/run.py, boundary check, cargo fmt --check
  • python3 pyre/check.py (dynasm, cranelift, wasm). The rows that remain red here are also red on main:
    • wasm synth/gc_pypy_frontend (guard_failures 331 -> 37x) and synth/pickle_terminal_raise_resume (loops_aborted 3 -> 4) fail the same way in main's own CI run 36212964394 at 17c8884acc7. Rebuilding the base sources locally gives the same numbers. These baselines were not re-recorded.
    • synth/raise_catch times out at 5 s only under host load (load average 124–208). Run alone, it uses 0.93 s (dynasm) and 1.22 s (cranelift) of CPU, against 0.86 s for pypy.

After rebasing onto b18ddc84291, the four new main commits touch none of this PR's files. cargo check --tests passes for majit-metainterp and the backends, with dynasm and with cranelift.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 40 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 2 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 6f7f3f59-d351-4af9-8e17-dc0e73088fdd

📥 Commits

Reviewing files that changed from the base of the PR and between 3a12078 and cbc1129.

📒 Files selected for processing (17)
  • majit/gate-triage.md
  • majit/majit-backend-cranelift/src/compiler.rs
  • majit/majit-backend-dynasm/src/j2plan.rs
  • majit/majit-backend-dynasm/src/regalloc.rs
  • majit/majit-backend-dynasm/src/runner.rs
  • majit/majit-backend/src/deadframe.rs
  • majit/majit-macros/src/jit_interp/codegen_state.rs
  • majit/majit-metainterp/src/compile.rs
  • majit/majit-metainterp/src/jit_state.rs
  • majit/majit-metainterp/src/jitdriver.rs
  • majit/majit-metainterp/src/pyjitpl.rs
  • majit/majit-metainterp/src/pyjitpl/dispatch.rs
  • majit/majit-metainterp/src/recorder.rs
  • majit/majit-metainterp/src/resume.rs
  • majit/majit-metainterp/src/trace_ctx.rs
  • pyre/pyre-jit/src/call_jit.rs
  • pyre/pyre-jit/src/eval.rs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

github-actions Bot commented Sep 26, 2026 •

Copy link
Copy Markdown

🤖 Codex parity review

Static analysis of this diff vs the local RPython/PyPy sources (commit cbc1129).
Updated: 2026-09-26T17:46:26.183Z

Files in the reviewed diff
majit/gate-triage.md
majit/majit-backend-cranelift/src/compiler.rs
majit/majit-backend-dynasm/src/j2plan.rs
majit/majit-backend-dynasm/src/regalloc.rs
majit/majit-backend-dynasm/src/runner.rs
majit/majit-backend/src/deadframe.rs
majit/majit-macros/src/jit_interp/codegen_state.rs
majit/majit-metainterp/src/compile.rs
majit/majit-metainterp/src/jit_state.rs
majit/majit-metainterp/src/jitdriver.rs
majit/majit-metainterp/src/pyjitpl.rs
majit/majit-metainterp/src/pyjitpl/dispatch.rs
majit/majit-metainterp/src/recorder.rs
majit/majit-metainterp/src/resume.rs
majit/majit-metainterp/src/trace_ctx.rs
pyre/extra_tests/README.md
pyre/extra_tests/run.py
pyre/extra_tests/snippets/3.1.2.13.py
pyre/extra_tests/snippets/3.1.2.16.py
pyre/extra_tests/snippets/3.1.2.18.py
pyre/extra_tests/snippets/3.1.2.19.py
pyre/extra_tests/snippets/3.1.3.2.py
pyre/extra_tests/snippets/3.1.3.4.py
pyre/extra_tests/snippets/3.1.3.5.py
pyre/extra_tests/snippets/README.md
pyre/extra_tests/snippets/argv_undecodable_argument.py
pyre/extra_tests/snippets/attribute_error_lookup_context.py
pyre/extra_tests/snippets/builtin___main__.py
pyre/extra_tests/snippets/builtin_abs.py
pyre/extra_tests/snippets/builtin_all.py
pyre/extra_tests/snippets/builtin_any.py
pyre/extra_tests/snippets/builtin_arity_kwargs.py
pyre/extra_tests/snippets/builtin_ascii.py
pyre/extra_tests/snippets/builtin_bin.py
pyre/extra_tests/snippets/builtin_bool.py
pyre/extra_tests/snippets/builtin_bound_method_access.py
pyre/extra_tests/snippets/builtin_bytearray.py
pyre/extra_tests/snippets/builtin_bytes.py
pyre/extra_tests/snippets/builtin_bytes_truthiness.py
pyre/extra_tests/snippets/builtin_callable.py
pyre/extra_tests/snippets/builtin_chr.py
pyre/extra_tests/snippets/builtin_compile.py
pyre/extra_tests/snippets/builtin_complex.py
pyre/extra_tests/snippets/builtin_dict.py
pyre/extra_tests/snippets/builtin_dict_union.py
pyre/extra_tests/snippets/builtin_dir.py
pyre/extra_tests/snippets/builtin_divmod.py
pyre/extra_tests/snippets/builtin_ellipsis.py
pyre/extra_tests/snippets/builtin_enumerate.py
pyre/extra_tests/snippets/builtin_eval.py
pyre/extra_tests/snippets/builtin_exceptions.py
pyre/extra_tests/snippets/builtin_exec.py
pyre/extra_tests/snippets/builtin_exit.py
pyre/extra_tests/snippets/builtin_file.py
pyre/extra_tests/snippets/builtin_filter.py
pyre/extra_tests/snippets/builtin_float.py
pyre/extra_tests/snippets/builtin_format.py
pyre/extra_tests/snippets/builtin_format_dunder.py
pyre/extra_tests/snippets/builtin_hash.py
pyre/extra_tests/snippets/builtin_hex.py
pyre/extra_tests/snippets/builtin_input.py
pyre/extra_tests/snippets/builtin_int.py
pyre/extra_tests/snippets/builtin_isinstance.py
pyre/extra_tests/snippets/builtin_issubclass.py
pyre/extra_tests/snippets/builtin_jit_folds.py
pyre/extra_tests/snippets/builtin_len.py
pyre/extra_tests/snippets/builtin_list.py
pyre/extra_tests/snippets/builtin_locals.py
pyre/extra_tests/snippets/builtin_locals_function.py
pyre/extra_tests/snippets/builtin_map.py
pyre/extra_tests/snippets/builtin_mappingproxy.py
pyre/extra_tests/snippets/builtin_max.py
pyre/extra_tests/snippets/builtin_memoryview.py
pyre/extra_tests/snippets/builtin_min.py
pyre/extra_tests/snippets/builtin_none.py
pyre/extra_tests/snippets/builtin_object.py
pyre/extra_tests/snippets/builtin_open.py
pyre/extra_tests/snippets/builtin_ord.py
pyre/extra_tests/snippets/builtin_posixshmem.py
pyre/extra_tests/snippets/builtin_pow.py
pyre/extra_tests/snippets/builtin_pow_modular_inverse.py
pyre/extra_tests/snippets/builtin_print.py
pyre/extra_tests/snippets/builtin_property.py
pyre/extra_tests/snippets/builtin_range.py
pyre/extra_tests/snippets/builtin_reversed.py
pyre/extra_tests/snippets/builtin_round.py
pyre/extra_tests/snippets/builtin_set.py
pyre/extra_tests/snippets/builtin_str.py
pyre/extra_tests/snippets/builtin_str_encode.py
pyre/extra_tests/snippets/builtin_str_subclass.py
pyre/extra_tests/snippets/builtin_str_unicode.py
pyre/extra_tests/snippets/builtin_str_unicode_slice.py
pyre/extra_tests/snippets/builtin_super.py
pyre/extra_tests/snippets/builtin_thread.py
pyre/extra_tests/snippets/builtin_tuple.py
pyre/extra_tests/snippets/builtin_type.py
pyre/extra_tests/snippets/builtin_type_arity.py
pyre/extra_tests/snippets/builtin_type_method_access.py
pyre/extra_tests/snippets/builtin_type_mro.py
pyre/extra_tests/snippets/builtin_vars_without_dict.py
pyre/extra_tests/snippets/builtin_zip.py
pyre/extra_tests/snippets/builtins_module.py
pyre/extra_tests/snippets/bytes_dunder_bytes_preference.py
pyre/extra_tests/snippets/bytes_fromhex_hex_sep.py
pyre/extra_tests/snippets/bytes_isascii.py
pyre/extra_tests/snippets/bytes_search_method_arity.py
pyre/extra_tests/snippets/call_kwargs_merge_collecting_mapping.py
pyre/extra_tests/snippets/call_star_unpack_collecting_iterable.py
pyre/extra_tests/snippets/class_build_non_type_base.py
pyre/extra_tests/snippets/class_classcell_non_cell.py
pyre/extra_tests/snippets/class_custom_mro_drops_type.py
pyre/extra_tests/snippets/class_custom_mro_incomplete.py
pyre/extra_tests/snippets/class_immutable_class_assignment.py
pyre/extra_tests/snippets/class_init_subclass_kwargs.py
pyre/extra_tests/snippets/class_metaclass_kwargs.py
pyre/extra_tests/snippets/class_metaclass_method_binding.py
pyre/extra_tests/snippets/class_module_str_layout_conflict.py
pyre/extra_tests/snippets/class_set_bases_layout_check.py
pyre/extra_tests/snippets/class_slots_store_attribute_error.py
pyre/extra_tests/snippets/cli_dash_c_dedent.py
pyre/extra_tests/snippets/closure_over_parameter_not_double_wrapped.py
pyre/extra_tests/snippets/code_co_consts.py
pyre/extra_tests/snippets/compile_filename_boundary.py
pyre/extra_tests/snippets/dict_or_dunders.py
pyre/extra_tests/snippets/dict_store_raising_eq_atomic.py
pyre/extra_tests/snippets/enum_bad_new_super.py
pyre/extra_tests/snippets/example_fizzbuzz.py
pyre/extra_tests/snippets/example_interactive.py
pyre/extra_tests/snippets/forbidden_instantiation.py
pyre/extra_tests/snippets/format_float_no_type.py
pyre/extra_tests/snippets/format_n_type.py
pyre/extra_tests/snippets/frozen.py
pyre/extra_tests/snippets/generator_gc_finalize.py
pyre/extra_tests/snippets/generator_yield_from_throw_arity.py
pyre/extra_tests/snippets/import.py
pyre/extra_tests/snippets/import_file.py
pyre/extra_tests/snippets/import_mutual1.py
pyre/extra_tests/snippets/import_mutual2.py
pyre/extra_tests/snippets/import_name.py
pyre/extra_tests/snippets/import_star.py
pyre/extra_tests/snippets/import_surrogate_name.py
pyre/extra_tests/snippets/import_target.py
pyre/extra_tests/snippets/import_unencodable_path_entry.py
pyre/extra_tests/snippets/index_overflow.py
pyre/extra_tests/snippets/int_from_bytes_kwargs.py
pyre/extra_tests/snippets/int_to_bytes_kwargs.py
pyre/extra_tests/snippets/iterator_dunders.py
pyre/extra_tests/snippets/iterator_type_identity.py
pyre/extra_tests/snippets/jit.py
pyre/extra_tests/snippets/jit_inline_raise_frame_identity.py
pyre/extra_tests/snippets/jit_inline_two_freevar_guard_resume.py
pyre/extra_tests/snippets/jit_inplace_user_loop.py
pyre/extra_tests/snippets/jit_subscr_str_subclass_override.py
pyre/extra_tests/snippets/list_reversed_dunder.py
pyre/extra_tests/snippets/marshal_nested_code_identity.py
pyre/extra_tests/snippets/module_type.py
pyre/extra_tests/snippets/name.py
pyre/extra_tests/snippets/operator_arithmetic.py
pyre/extra_tests/snippets/operator_cast.py
pyre/extra_tests/snippets/operator_comparison.py
pyre/extra_tests/snippets/operator_div.py
pyre/extra_tests/snippets/operator_inplace.py
pyre/extra_tests/snippets/operator_membership.py
pyre/extra_tests/snippets/option_value_undecodable.py
pyre/extra_tests/snippets/pickle_accelerator.py
pyre/extra_tests/snippets/pickle_bound_method.py
pyre/extra_tests/snippets/pickle_callableiter.py
pyre/extra_tests/snippets/pickle_dictiter.py
pyre/extra_tests/snippets/pickle_disallow.py
pyre/extra_tests/snippets/pickle_enumerate.py
pyre/extra_tests/snippets/pickle_import.py
pyre/extra_tests/snippets/pickle_instances.py
pyre/extra_tests/snippets/pickle_io_prereq.py
pyre/extra_tests/snippets/pickle_iterators_roundtrip.py
pyre/extra_tests/snippets/pickle_pypy_module.py
pyre/extra_tests/snippets/pickle_rangeiter.py
pyre/extra_tests/snippets/pickle_reduce.py
pyre/extra_tests/snippets/pickle_roundtrip.py
pyre/extra_tests/snippets/pickle_seqiter.py
pyre/extra_tests/snippets/protocol_callable.py
pyre/extra_tests/snippets/protocol_index_bad.py
pyre/extra_tests/snippets/protocol_iterable.py
pyre/extra_tests/snippets/protocol_iternext.py
pyre/extra_tests/snippets/pypy_list_sizehint.py
pyre/extra_tests/snippets/sandbox_smoke.py
pyre/extra_tests/snippets/scope_lambda.py
pyre/extra_tests/snippets/set_constructor_arity.py
pyre/extra_tests/snippets/set_frozenset_constructor_paths.py
pyre/extra_tests/snippets/set_subtype_constructor_protocol.py
pyre/extra_tests/snippets/set_symdiff_raising_eq.py
pyre/extra_tests/snippets/stdlib_abc.py
pyre/extra_tests/snippets/stdlib_abc_number.py
pyre/extra_tests/snippets/stdlib_array.py
pyre/extra_tests/snippets/stdlib_ast.py
pyre/extra_tests/snippets/stdlib_binascii.py
pyre/extra_tests/snippets/stdlib_collections.py
pyre/extra_tests/snippets/stdlib_collections_deque.py
pyre/extra_tests/snippets/stdlib_configparser.py
pyre/extra_tests/snippets/stdlib_copy.py
pyre/extra_tests/snippets/stdlib_csv.py
pyre/extra_tests/snippets/stdlib_ctypes.py
pyre/extra_tests/snippets/stdlib_datetime.py
pyre/extra_tests/snippets/stdlib_dir_module.py
pyre/extra_tests/snippets/stdlib_dis.py
pyre/extra_tests/snippets/stdlib_enum.py
pyre/extra_tests/snippets/stdlib_functools.py
pyre/extra_tests/snippets/stdlib_functools_cmp_to_key.py
pyre/extra_tests/snippets/stdlib_hashlib.py
pyre/extra_tests/snippets/stdlib_imp.py
pyre/extra_tests/snippets/stdlib_inspect.py
pyre/extra_tests/snippets/stdlib_io.py
pyre/extra_tests/snippets/stdlib_io_buffered.py
pyre/extra_tests/snippets/stdlib_io_buffered_random.py
pyre/extra_tests/snippets/stdlib_io_buffered_rwpair.py
pyre/extra_tests/snippets/stdlib_io_buffered_writer.py
pyre/extra_tests/snippets/stdlib_io_bytesio.py
pyre/extra_tests/snippets/stdlib_io_stringio.py
pyre/extra_tests/snippets/stdlib_itertools.py
pyre/extra_tests/snippets/stdlib_json.py
pyre/extra_tests/snippets/stdlib_logging.py
pyre/extra_tests/snippets/stdlib_marshal.py
pyre/extra_tests/snippets/stdlib_math.py
pyre/extra_tests/snippets/stdlib_operator.py
pyre/extra_tests/snippets/stdlib_os.py
pyre/extra_tests/snippets/stdlib_pwd.py
pyre/extra_tests/snippets/stdlib_random.py
pyre/extra_tests/snippets/stdlib_re.py
pyre/extra_tests/snippets/stdlib_select.py
pyre/extra_tests/snippets/stdlib_signal.py
pyre/extra_tests/snippets/stdlib_socket.py
pyre/extra_tests/snippets/stdlib_socket_makefile.py
pyre/extra_tests/snippets/stdlib_sqlite.py
pyre/extra_tests/snippets/stdlib_string.py
pyre/extra_tests/snippets/stdlib_struct.py
pyre/extra_tests/snippets/stdlib_subprocess.py
pyre/extra_tests/snippets/stdlib_sys_getframe.py
pyre/extra_tests/snippets/stdlib_termios.py
pyre/extra_tests/snippets/stdlib_threading.py
pyre/extra_tests/snippets/stdlib_time.py
pyre/extra_tests/snippets/stdlib_tokenize.py
pyre/extra_tests/snippets/stdlib_traceback.py
pyre/extra_tests/snippets/stdlib_types.py
pyre/extra_tests/snippets/stdlib_typing.py
pyre/extra_tests/snippets/stdlib_weakref.py
pyre/extra_tests/snippets/stdlib_zlib.py
pyre/extra_tests/snippets/symtable_filename_surrogateescape.py
pyre/extra_tests/snippets/syntax_annotations.py
pyre/extra_tests/snippets/syntax_assignment.py
pyre/extra_tests/snippets/syntax_async.py
pyre/extra_tests/snippets/syntax_async_comprehension.py
pyre/extra_tests/snippets/syntax_attr.py
pyre/extra_tests/snippets/syntax_call_nested.py
pyre/extra_tests/snippets/syntax_class.py
pyre/extra_tests/snippets/syntax_comma.py
pyre/extra_tests/snippets/syntax_comment.py
pyre/extra_tests/snippets/syntax_comprehension.py
pyre/extra_tests/snippets/syntax_decimal.py
pyre/extra_tests/snippets/syntax_decorator.py
pyre/extra_tests/snippets/syntax_del.py
pyre/extra_tests/snippets/syntax_doc.py
pyre/extra_tests/snippets/syntax_for.py
pyre/extra_tests/snippets/syntax_forbidden_name.py
pyre/extra_tests/snippets/syntax_fstring.py
pyre/extra_tests/snippets/syntax_function.py
pyre/extra_tests/snippets/syntax_function2.py
pyre/extra_tests/snippets/syntax_function_args.py
pyre/extra_tests/snippets/syntax_funky.py
pyre/extra_tests/snippets/syntax_generator.py
pyre/extra_tests/snippets/syntax_global_nonlocal.py
pyre/extra_tests/snippets/syntax_if.py
pyre/extra_tests/snippets/syntax_if_expression.py
pyre/extra_tests/snippets/syntax_indent.py
pyre/extra_tests/snippets/syntax_invalid.py
pyre/extra_tests/snippets/syntax_literal.py
pyre/extra_tests/snippets/syntax_match.py
pyre/extra_tests/snippets/syntax_metaclass.py
pyre/extra_tests/snippets/syntax_nested_control_flow.py
pyre/extra_tests/snippets/syntax_non_utf8.py
pyre/extra_tests/snippets/syntax_short_circuit_bool.py
pyre/extra_tests/snippets/syntax_short_circuit_evaluations.py
pyre/extra_tests/snippets/syntax_slice.py
pyre/extra_tests/snippets/syntax_statement.py
pyre/extra_tests/snippets/syntax_try.py
pyre/extra_tests/snippets/syntax_type_hint.py
pyre/extra_tests/snippets/syntax_while.py
pyre/extra_tests/snippets/syntax_with.py
pyre/extra_tests/snippets/test_threading.py
pyre/extra_tests/snippets/thread_start_small_nursery.py
pyre/extra_tests/snippets/time_clock_info.py
pyre/extra_tests/snippets/type_name_bare.py
pyre/extra_tests/snippets/vm_specialization.py
pyre/extra_tests/snippets/xfail_assert.py
pyre/pyre-jit/src/call_jit.rs
pyre/pyre-jit/src/eval.rs

Codex did not produce a report (exit 1). Last log lines:

2026-09-26T17:46:09.241924Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:09.268441Z ERROR codex_models_manager::manager: failed to refresh available models: unexpected status 401 Unauthorized: Provided authentication token is expired. Please try signing in again., url: https://chatgpt.com/backend-api/codex/models?client_version=0.157.1, cf-ray: a414161efcd3062d-IAD, request id: req_d35335a5be184047be87bd7a0e0d91a7, auth error: 401, auth error code: token_expired
2026-09-26T17:46:09.401503Z ERROR rmcp::transport::worker: worker quit with fatal: Transport channel closed, when UnexpectedServerResponse("HTTP 401: {\n  \"error\": {\n    \"message\": \"Provided authentication token is expired. Please try signing in again.\",\n    \"type\": \"invalid_request_error\",\n    \"code\": \"token_expired\",\n    \"param\": null\n  },\n  \"status\": 401,\n  \"detail\": {\n    \"code\": \"token_expired\",\n    \"message\": \"Provided authentication token is expired. Please try signing in again.\"\n  }\n}")
2026-09-26T17:46:09.403047Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:09.403101Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:09.403145Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:09.517382Z ERROR rmcp::transport::worker: worker quit with fatal: Transport channel closed, when UnexpectedServerResponse("HTTP 401: {\n  \"error\": {\n    \"message\": \"Provided authentication token is expired. Please try signing in again.\",\n    \"type\": \"invalid_request_error\",\n    \"code\": \"token_expired\",\n    \"param\": null\n  },\n  \"status\": 401,\n  \"detail\": {\n    \"code\": \"token_expired\",\n    \"message\": \"Provided authentication token is expired. Please try signing in again.\"\n  }\n}")
2026-09-26T17:46:09.647372Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:09.794725Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.016720Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.095839Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.222969Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.223026Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.223071Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.674871Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.674956Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:10.675013Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 2/5
2026-09-26T17:46:11.285889Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:11.285979Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:11.286037Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 3/5
2026-09-26T17:46:12.385373Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:12.385454Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:12.385515Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 4/5
2026-09-26T17:46:14.151823Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:14.151903Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:14.151960Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 5/5
2026-09-26T17:46:17.555855Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:17.555937Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:17.556014Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
warning: Falling back from WebSockets to HTTPS transport. workspace routing discovery unauthorized (401)
2026-09-26T17:46:17.908470Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:17.908537Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:17.908630Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 1/5
2026-09-26T17:46:18.292693Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:18.292776Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:18.292830Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 2/5
2026-09-26T17:46:18.908954Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:18.909031Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:18.909088Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 3/5
2026-09-26T17:46:19.971397Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:19.971481Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:19.971539Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 4/5
2026-09-26T17:46:21.851624Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:21.851695Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:21.851747Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: Reconnecting... 5/5
2026-09-26T17:46:25.614171Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:25.614253Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
2026-09-26T17:46:25.614310Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: workspace routing discovery unauthorized (401)
2026-09-26T17:46:25.859958Z ERROR codex_login::auth::manager: Failed to refresh token: Your access token could not be refreshed because your refresh token was already used. Please log out and sign in again.
ERROR: workspace routing discovery unauthorized (401)

- resume.rs consume_vable_info reads the identity with next_ref() and
  asserts get_total_size(virtualizable) == vable_size - 1. The
  identity_override argument, the NULLREF substitution in
  next_ref_for_resume_slot, the JitState::blackhole_virtualizable_identity
  hook (trait default and state-field macro impl), and MAJIT_LEAF3_PROV
  are removed.
- patch_new_loop_to_load_virtualizable_fields no longer returns early
  when inputargs are not longer than the red prefix.
- GUARD_NOT_FORCED_2: cranelift records the force spill locations on
  the descr (set_rd_locs), keeps slot 0 for FINISH's result, and adds
  the guard's Ref spills to FINISH's gcmap; dynasm routes it through
  consider_guard_not_forced_2_j2. The dynasm raw exit returns
  jf_savedata instead of None.
- handle_fail, resume_in_blackhole_from_exit_layout,
  wasm_ca_resume_deopt and handle_async_forcing root the copied
  jf_savedata word with DeadFrameRefRoots across their allocations and
  read it back; handle_fail returns the reloaded value.
- Trace::get_iter_for_optimizer seeds ByteTraceIter from plain InputArg copies that
  carry the InputArgRc types and values.

spec_folds! 87 -> 87, try_walker_specialize_ 77 -> 77.

Assisted-by: Grok 4.7
Assisted-by: Claude Opus 5.5
The raw malloc fallback stays only for an untyped array descr
(type_id == 0).

Assisted-by: Grok 4.7
Assisted-by: Claude Opus 5.5
@codspeed

codspeed Bot commented Sep 26, 2026 •

Copy link
Copy Markdown
Contributor

Merging this PR will not alter performance

✅ 10 untouched benchmarks
⏩ 6 skipped benchmarks1


Comparing fib_recursive (cbc1129) with main (e284cc6)2

Open in CodSpeed

Footnotes

  1. 6 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

  2. No successful run was found on main (3a12078) during the generation of this report, so e284cc6 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report. ↩

@youknowone
youknowone merged commit e284cc6 into main Sep 26, 2026
4 checks passed
@youknowone
youknowone deleted the fib_recursive branch September 26, 2026 16:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant