Skip to content

Get external_detach_state tests working on x86 #7765

@jackgallagher-arm

Description

@jackgallagher-arm

The external_detach_state tests are currently AArch64 only even though they are based on the api.detach_state test which fully supports AArch64 and x86.

If you try to run the tests on x86 you get various assert failures:

core/stats.c:361 ks->node[ks->depth - 1].var == pv && "stop not matching TOS"
core/unix/signal.c:4048 extra_size == frame->uc.uc_mcontext.fpstate->sw_reserved.extended_size

There is also a change required to thread_check_sigstate_from_handler() in detach_state_shared.c. The external detach state tests rely on runall.cmake sending a SIGTERM signal to detect the detach has taken place so we need to make sure SIGTERM is unblocked during the signal handler. For some reason when we unblock it on x86 api.detatch_state (the internal detach state test) fails with this assert:

core/vmareas.c:8328 !ok || !TEST(MEMPROT_WRITE, prot2) || TEST(FRAG_SELFMOD_SANDBOXED, *flags) || !INTERNAL_OPTION(hw_cache_consistency)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions