{"record":{"id":"30b04909d914bd38","repo":"podman-container-tools/podman","slug":"cannot-sigdelset-sigchld-m","errorCode":null,"errorMessage":"cannot sigdelset(SIGCHLD): %m\n","messagePattern":"cannot sigdelset\\(SIGCHLD\\): %m\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/rootless/rootless_linux.c","lineNumber":1179,"sourceCode":"          close (f);\n      if (do_socket_activation)\n        {\n          unsetenv (\"LISTEN_PID\");\n          unsetenv (\"LISTEN_FDS\");\n          unsetenv (\"LISTEN_FDNAMES\");\n        }\n\n      return pid;\n    }\n\n  if (sigfillset (&sigset) < 0)\n    {\n      fprintf (stderr, \"cannot fill sigset: %m\\n\");\n      _exit (EXIT_FAILURE);\n    }\n  if (sigdelset (&sigset, SIGCHLD) < 0)\n    {\n      fprintf (stderr, \"cannot sigdelset(SIGCHLD): %m\\n\");\n      _exit (EXIT_FAILURE);\n    }\n  if (sigdelset (&sigset, SIGTERM) < 0)\n    {\n      fprintf (stderr, \"cannot sigdelset(SIGTERM): %m\\n\");\n      _exit (EXIT_FAILURE);\n    }\n  if (sigprocmask (SIG_BLOCK, &sigset, &oldsigset) < 0)\n    {\n      fprintf (stderr, \"cannot block signals: %m\\n\");\n      _exit (EXIT_FAILURE);\n    }\n\n  if (do_socket_activation)\n    {\n      char s[32];\n      sprintf (s, \"%d\", getpid());\n      setenv (\"LISTEN_PID\", s, true);","sourceCodeStart":1161,"sourceCodeEnd":1197,"githubUrl":"https://github.com/podman-container-tools/podman/blob/a2409076ef2fef60ad9ac046375dedc7d9410ef4/pkg/rootless/rootless_linux.c#L1161-L1197","documentation":"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.","triggerScenarios":"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.","commonSituations":"Should never fire on a healthy host; its appearance indicates the process image or libc is damaged rather than a configuration problem.","solutions":["Treat as a bug report, not a config issue: rerun and check whether it is deterministic","Verify libc/podman binary integrity and rule out LD_PRELOAD interposition","Capture stderr plus a core dump and report to containers/podman with reproduction steps"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat any occurrence as a corruption/ABI bug: verify binary integrity (rpm -V podman)","Avoid custom-patched libc or podman builds in production","Report upstream with podman/glibc/kernel versions if reproducible"],"tags":["podman","rootless","signals","defensive-check","unreachable"],"backgroundTag":null,"analyzedSha":"a2409076ef2fef60ad9ac046375dedc7d9410ef4","analyzedAt":"2026-08-15T15:57:05.625Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}