Error Codes Wiki

Linux errno 38 ENOSYS Function Not Implemented — What It Means & How to Fix It

Warningerrno

About Linux errno 38 ENOSYS Function Not Implemented

Fix Linux errno 38 ENOSYS when a system call is not supported by the kernel version, architecture, or seccomp profile. This guide covers everything you need to know about this topic, including common causes, step-by-step solutions, and answers to frequently asked questions.

Here are the key things to understand: ENOSYS (errno 38) means the requested system call is not implemented in the running kernel. This can happen when running newer binaries on an older kernel that lacks certain syscalls. Container environments (Docker, Kubernetes) may block syscalls via seccomp security profiles. Cross-architecture execution (ARM binary on x86) can also trigger ENOSYS for unsupported syscalls. Understanding these fundamentals will help you diagnose and resolve this issue more effectively.

The most common reasons this occurs include: Kernel version is too old and does not support the required system call. Docker or Kubernetes seccomp profile blocking the system call for security. Running a binary compiled for a different architecture or kernel version. File system mounted with options that disable certain operations (e.g., noatime disabling atime updates). Identifying the root cause is the first step toward finding the right solution.

To resolve this, follow these recommended steps: Check kernel version: uname -r and compare with the minimum required version for the software. For Docker containers, use --security-opt seccomp=unconfined to test if seccomp is the cause. Update the kernel to a newer version that supports the required system call. Use strace to identify which system call is returning ENOSYS: strace -e trace=all ./program 2>&1 | grep ENOSYS. If these steps do not resolve the issue, consider consulting additional resources or a qualified professional.

This article is part of our Linux Error Codes collection on Error Codes Wiki. We provide comprehensive, up-to-date information to help you find solutions quickly.

Quick Answer

How do I find which syscall is failing?

Use strace: strace -f ./program 2>&1 | grep ENOSYS. The output shows the exact system call name and arguments. Look up the syscall to find which kernel version introduced it.

Overview

Fix Linux errno 38 ENOSYS when a system call is not supported by the kernel version, architecture, or seccomp profile.

Key Details

  • ENOSYS (errno 38) means the requested system call is not implemented in the running kernel
  • This can happen when running newer binaries on an older kernel that lacks certain syscalls
  • Container environments (Docker, Kubernetes) may block syscalls via seccomp security profiles
  • Cross-architecture execution (ARM binary on x86) can also trigger ENOSYS for unsupported syscalls

Common Causes

  • Kernel version is too old and does not support the required system call
  • Docker or Kubernetes seccomp profile blocking the system call for security
  • Running a binary compiled for a different architecture or kernel version
  • File system mounted with options that disable certain operations (e.g., noatime disabling atime updates)

Steps

  1. 1Check kernel version: uname -r and compare with the minimum required version for the software
  2. 2For Docker containers, use --security-opt seccomp=unconfined to test if seccomp is the cause
  3. 3Update the kernel to a newer version that supports the required system call
  4. 4Use strace to identify which system call is returning ENOSYS: strace -e trace=all ./program 2>&1 | grep ENOSYS

Tags

errno-38enosyssyscallkernelseccomp

Related Items

More in Errno

Frequently Asked Questions

Use strace: strace -f ./program 2>&1 | grep ENOSYS. The output shows the exact system call name and arguments. Look up the syscall to find which kernel version introduced it.