{"record":{"id":"479450055b5f021f","repo":"podman-container-tools/podman","slug":"cannot-fill-sigset-m-n","errorCode":null,"errorMessage":"cannot fill sigset: %m\\n","messagePattern":"cannot fill sigset: %m\\\\n","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"pkg/rootless/rootless_linux.c","lineNumber":1339,"sourceCode":"          num_fds = strtol (saved_systemd_listen_fds, NULL, 10);\n          if (num_fds != LONG_MIN && num_fds != LONG_MAX)\n            {\n              int f;\n\n              for (f = 3; f < num_fds + 3; f++)\n                if (is_fd_inherited (f))\n                  close (f);\n            }\n          unsetenv (\"LISTEN_PID\");\n          unsetenv (\"LISTEN_FDS\");\n          unsetenv (\"LISTEN_FDNAMES\");\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","sourceCodeStart":1321,"sourceCodeEnd":1357,"githubUrl":"https://github.com/podman-container-tools/podman/blob/a2409076ef2fef60ad9ac046375dedc7d9410ef4/pkg/rootless/rootless_linux.c#L1321-L1357","documentation":"In the child half of reexec_in_user_namespace (after the CLONE_NEWUSER|CLONE_NEWNS fork succeeded and the parent returned), sigfillset(&sigset) failed and the child _exit(EXIT_FAILURE)s before reading the ready pipe. This initializes the signal mask later used to protect namespace configuration. sigfillset can only fail with EINVAL for an invalid set argument, so on a healthy glibc this check is defensive and effectively unreachable.","triggerScenarios":"Memory corruption of the stack sigset_t, a broken libc ABI, or interposed signal functions via LD_PRELOAD returning an error.","commonSituations":"Should never occur in normal operation; appearance indicates a damaged process image rather than a tunable configuration.","solutions":["Rerun to rule out transient corruption","Verify podman and glibc integrity; remove LD_PRELOAD hooks","Report upstream with kernel/glibc versions if it reproduces"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["No operational guard exists - this path is unreachable on a healthy libc","Keep podman and glibc from consistent distro packages","Report any occurrence upstream with kernel/glibc versions and a core dump"],"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"}