Skip to content

[bug] UnixBench shell tests hanging #36

@sunhaosheng

Description

@sunhaosheng

Issue Title (Short summary)

[bug] UnixBench shell tests hanging

Environment

  • Application / Service name: NA
  • Version / Branch: mainline
  • Deployment environment: qemu
  • Container runtime (if any):
  • Other dependencies (e.g., database, cache, middleware and versions): UnixBench 6.0.0, perl, make, gcc, g++
    A configured image can be downloaded via rootfs-unixbench.img.xz

Architecture

aarch64 + qemu

Image (Container Image Information)

  • Image registry and name: alpine-rootfs img

Description

When running the compiled Unixbench shell1/8/16 test on Starry OS, it froze after about 30 seconds.

Reproduction Steps (if reproducible)

cd ./UnixBench && ./Run shell1

Expected Behavior

The test continues and the test score will be displayed after approximately 180 seconds.

Actual Behavior

it would froze after about 30 seconds without any warnings or error. Meanwhile, this process can be killed throught the shortcut ''ctrl+c''.

Logs / Error Details

  • System or container status:

Troubleshooting & Workarounds

The root cause of this issue is that the /bin/sh process running multi.sh, when waiting for the tst.sh child processes it spawned, suspends itself using sigsuspend—following POSIX conventions—until it receives a SIGCHLD from the kernel. However, in StarryOS’s previous implementation, sigsuspend returned 0 after being awakened by a signal instead of returning -EINTR as required by the specification.

As a result, /bin/sh mistakenly believed that it had not been interrupted by a signal and that the call returned normally. This broke the entire wait logic: the shell failed to retrieve the child process statuses in time, causing the outer multi.sh shell to block indefinitely, which ultimately led to the entire shell1 test hanging.

Notes / Additional Information

  • Related Issue / PR / RFC links:
  • Contact person (for follow-up questions):
  • Desired priority (e.g., P0/P1/P2):

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions