Skip to content

fix(runtime): unsupported dynamic Function construct aborts instead of reaching catch #9207

Description

@proggeramlug

Release v0.5.1519 server preflight on exact release commit 0ba0aa5 found that crates/perry/tests/issue_6559_dyn_function_interpreter.rs::unsupported_construct_diagnostic_end_to_end aborts with panic in a function that cannot unwind.

Reproduction uses the production-compatible release runtime built with panic=abort and -C force-unwind-tables=yes, then compiles a fixture with try { new Function(runtimeBuiltClassSource) } catch (e) { ... }.

Expected: a catchable TypeError naming unsupported construct and class.
Actual: SIGABRT while the exception crosses the dynamic Function runtime path.

The likely regression surface is #8981: js_function_ctor_from_strings is extern C-unwind, while the #8479 exception-transport contract documents that C-unwind pass-through frames in the panic=abort runtime can install the exact RFC-2945 abort guard being triggered.

Acceptance:

  • The unsupported_construct_diagnostic_end_to_end test passes against a release panic=abort runtime on Linux.
  • The dyn-eval-off capability-probe refusal remains catchable in test/debug builds.
  • Preserve force-unwind-tables and generated invoke/landingpad transport.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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