Skip to content

Windows: perry-runtime --lib test suite has pre-existing failures now that the crate compiles there (#7355 fallout inventory) #7356

Description

@proggeramlug

#7355 made perry-runtime compile on Windows for the first time (main's unguarded eh_walker calls had broken the build outright, and no Windows CI existed to notice). Running cargo test -p perry-runtime --lib on a real Windows 11 host now surfaces pre-existing platform gaps that were previously unmeasurable. None are related to the #7354 walker — gc::roots::stack_maps and exception:: tests are green, and cargo test -p perry-codegen --lib is 599/599.

Inventory from sequential runs (--test-threads=1, iteratively skipping each process-killing stopper; ~904 tests pass between stoppers):

Process-killing stoppers (each aborts the whole harness, hiding everything after it):

  • dyn_eval:: throw-exercising tests — js_throw raises SEH; the unwind dies with "panic in a function that cannot unwind" / STATUS_STACK_BUFFER_OVERRUN. Backtrace shows RtlUnwind_report_gsfailure from perry_runtime::exception::js_throw under dyn_eval::tests::catch_throw. The Windows exception transport does not survive under the Rust test harness (GS cookie failure during unwind through Rust frames).
  • ffi::setjmp::tests::setjmp_smoke_via_c_int_buffer — STATUS_ACCESS_VIOLATION (setjmp is already known host-gated on Windows; issue_856_promise_microtask_setjmp_does_not_crash passes).
  • native_abi::tests::buffer_span_guards_require_registered_buffer — non-unwinding panic → abort.

Plain assertion failures:

  • date::tests::utc_getters_ignore_process_timezone — date.rs:1720, UTC getters are not ignoring the process timezone on Windows (host TZ was UTC+2 DST).
  • gc::tests::incremental_sweep_reclaim::budgeted_reclaim_runs_process_malloc_trim — asserts allocator trim ran, but telemetry reports malloc_trim: {reason: "not_supported", status: "unsupported"} on Windows; the [gc] Graduate incremental collection: budgeted scanner coverage, assists for all phases, default-on (successor to #6083) #6180 RSS-floor assert assumes a glibc/mimalloc trim.
  • gc::tests::teardown::map_set_side_allocations_release_on_thread_exit — teardown.rs:23, side-allocation count 66 != 64 at thread exit.
  • child_process::tests::test_spawn_sync_result_fields — failed in a parallel run (not yet re-isolated).

More failures may hide behind the stoppers — each abort truncates the run, so this list is a lower bound. Fixing the SEH-transport-under-test-harness stopper first would let the rest be inventoried in one pass.

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