Skip to content

Intermittent shared musl fork/exec stalls while writing parent PASS marker #35

Description

@zhoubot

Observation

A fail-closed LinxISA libc gate observed one intermittent timeout in fork_exec_path_shared with a fresh Linux build and HEAD-matched clean QEMU.

Bound inputs:

  • QEMU HEAD: 2856230890045899f074c18bcb2c2e37bbd09a0c
  • QEMU binary SHA256: d66f8a5d9cbc4ac165851e90975d8344bbf15bd7c89be73da689ca73e25305eb
  • Linux HEAD: 731055e0e2b77bb89749c6cce9194ced72371bf5
  • vmlinux SHA256: db653ea42d1edd1c460e01a4a8f014bf5c2e0f465317c870fc95f71951d52be0

The failing log reached:

  • MUSL_FORK_EXEC_PATH_CHILD_ENTRY
  • child printf
  • MUSL_FORK_EXEC_PATH_CHILD
  • a partial parent marker MUSL_FOR

It did not reach the complete parent PASS marker or LINX_REBOOT lisc_shutdown, and timed out at 90 seconds. There was no user trap, panic, decode failure, or illegal instruction.

Repeatability

The same bound inputs subsequently passed:

  • focused shared sample: 4/4 independent runs, including three with a 30 second timeout
  • full static/shared 32-sample libc gate: 2/2 runs

Observed recurrence after the first failure: 0/6. This is therefore an unassigned flaky signal, not evidence of a deterministic musl or Linux regression.

Reproduction

python3 avs/qemu/run_musl_smoke.py \
  --mode phase-b --link shared --sample fork_exec_path --skip-build \
  --kernel /tmp/linx-linux-vmlinux-clean-build/vmlinux \
  --qemu /tmp/linx-qemu-clean-build/qemu-system-linx64 \
  --timeout 30 --out-dir /tmp/linx-fork-exec-shared-repro

Success requires the full PASS marker, QEMU exit code 0, and LINX_REBOOT lisc_shutdown. The harness intentionally does not retry or increase the timeout.

Next diagnostic trigger

If this recurs, capture heartbeat/retirement evidence and audit the translation-time block state read by linx_tr_init_disas_context against the TB identity produced by linx_get_tb_cpu_state. This is a diagnostic hypothesis only; no QEMU fix is proposed without a repeatable divergence.

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