podman-container-tools/podman · error

cannot sigdelset(SIGCHLD): %m

Error message

cannot sigdelset(SIGCHLD): %m

What it means

In the reexec_userns_join child, sigdelset(&sigset, SIGCHLD) failed while carving SIGCHLD out of the just-filled signal mask (so the child can still be reaped/see children while everything else is blocked). The child _exit(EXIT_FAILURE)s. Like the other sigset checks in this block, sigdelset can only return EINVAL for an invalid signal number, and SIGCHLD is valid by definition — this is defensive, effectively unreachable code.

Source

Thrown at pkg/rootless/rootless_linux.c:1179

          close (f);
      if (do_socket_activation)
        {
          unsetenv ("LISTEN_PID");
          unsetenv ("LISTEN_FDS");
          unsetenv ("LISTEN_FDNAMES");
        }

      return pid;
    }

  if (sigfillset (&sigset) < 0)
    {
      fprintf (stderr, "cannot fill sigset: %m\n");
      _exit (EXIT_FAILURE);
    }
  if (sigdelset (&sigset, SIGCHLD) < 0)
    {
      fprintf (stderr, "cannot sigdelset(SIGCHLD): %m\n");
      _exit (EXIT_FAILURE);
    }
  if (sigdelset (&sigset, SIGTERM) < 0)
    {
      fprintf (stderr, "cannot sigdelset(SIGTERM): %m\n");
      _exit (EXIT_FAILURE);
    }
  if (sigprocmask (SIG_BLOCK, &sigset, &oldsigset) < 0)
    {
      fprintf (stderr, "cannot block signals: %m\n");
      _exit (EXIT_FAILURE);
    }

  if (do_socket_activation)
    {
      char s[32];
      sprintf (s, "%d", getpid());
      setenv ("LISTEN_PID", s, true);

View on GitHub (pinned to a2409076ef)

Solutions

  1. Treat as a bug report, not a config issue: rerun and check whether it is deterministic
  2. Verify libc/podman binary integrity and rule out LD_PRELOAD interposition
  3. Capture stderr plus a core dump and report to containers/podman with reproduction steps
Defensive patterns

Strategy: validation

Prevention

When it happens

Trigger: sigdelset returning -1 requires an invalid signo argument; with the constant SIGCHLD that implies a corrupted sigset_t, a broken libc, or ABI-level memory corruption.

Common situations: Should never fire on a healthy host; its appearance indicates the process image or libc is damaged rather than a configuration problem.

Related errors


AI-assisted analysis of podman-container-tools/podman@a2409076ef (2026-08-15). Data as JSON: /api/errors/30b04909d914bd38. Report an issue: GitHub.