Skip to content

Support syscalls necessary for Go runtime #1540

@cohosh

Description

@cohosh

Describe the issue
I'm working on getting Snowflake simulations running in Shadow, and for all of the Go binaries I'm running up against the same unsupported system calls. Here's an example from the broker:

00:00:00.079100 [worker-2] 00:00:01.000000000 [ERROR] [broker:11.0.0.1] [syscall_handler.c:506] [syscallhandler_make_syscall] Returning error 38 (ENOSYS) for unsupported syscall 204, which may result in unusual behavior
00:00:00.130658 [worker-2] 00:00:01.000000000 [ERROR] [broker:11.0.0.1] [syscall_handler.c:506] [syscallhandler_make_syscall] Returning error 38 (ENOSYS) for unsupported syscall 281, which may result in unusual behavior
00:00:00.131060 [worker-2] 00:00:01.000000000 [ERROR] [broker:11.0.0.1] [syscall_handler.c:506] [syscallhandler_make_syscall] Returning error 38 (ENOSYS) for unsupported syscall 24, which may result in unusual behavior

The unsupported system calls are:

  • sched_getaffinity (204)
  • epoll_pwait (281)

It's also throwing an ENOSYS error for sched_yield (24) which is strange because AFAICT from looking at the source code, it's implemented.

Since these are being called from the Go runtime library and I've tried setting GOMAXPROCS=1 with no success, I suspect they are necessary for all Go programs (or at least all that have any goroutines).

To Reproduce
Try running any Go program with goroutines

Shadow (please complete the following information):

  • Version: Shadow 2.0.0-pre.4

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type: BugError or flaw producing unexpected results

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions