podman-container-tools/podman · error
unable to print to string
Error message
unable to print to string
What it means
While creating the rootless pause process, the intermediate parent formats '<state_dir>/pause.pid.XXXXXX' with asprintf for an atomic (mkstemp + rename_noreplace) write of the pause PID (pkg/rootless/rootless_linux.c:1034-1039). This message means asprintf failed - i.e. ENOMEM - so the freshly forked pause child is SIGKILLed and the process _exits with failure, aborting the whole podman invocation before Go starts.
Source
Thrown at pkg/rootless/rootless_linux.c:1036
int r, fd;
close (p[0]);
setsid ();
pid = syscall_clone (SIGCHLD, NULL);
if (pid < 0)
_exit (EXIT_FAILURE);
if (pid)
{
char pid_str[12];
char *tmp_file_path = NULL;
sprintf (pid_str, "%d", pid);
if (asprintf (&tmp_file_path, "%s/pause.pid.XXXXXX", state_dir) < 0)
{
fprintf (stderr, "unable to print to string\n");
kill (pid, SIGKILL);
_exit (EXIT_FAILURE);
}
if (tmp_file_path == NULL)
{
fprintf (stderr, "temporary file path is NULL\n");
kill (pid, SIGKILL);
_exit (EXIT_FAILURE);
}
fd = mkstemp (tmp_file_path);
if (fd < 0)
{
fprintf (stderr, "error creating temporary file: %m\n");
kill (pid, SIGKILL);
_exit (EXIT_FAILURE);
}View on GitHub (pinned to a2409076ef)
Solutions
- Raise memory limits: 'ulimit -v unlimited' and check 'systemctl show user-$(id -u) -p MemoryMax'
- Check 'dmesg' for OOM activity and free memory, then retry the command
- Retry after the system load drops - the condition is transient
- If it recurs with sane limits, report upstream with memory-limit details
Defensive patterns
Strategy: validation
Validate before calling
# Guard memory limits before the first rootless podman command of a session
ulimit -v unlimited 2>/dev/null || true
free -m | awk 'NR==2 { if ($7 < 256) { print "low memory: " $7 " MiB free" > "/dev/stderr"; exit 1 } }'
podman "$@"
Prevention
- Keep RLIMIT_AS/cgroup memory limits generous in rootless sessions
- Treat first-command OOM-style failures as a signal to check session limits
- Retry once after memory pressure clears
When it happens
Trigger: Memory exhaustion (RLIMIT_AS/cgroup cap/OOM) at the exact moment podman sets up the pause process for the user namespace - the only realistic cause of asprintf failing for this short string.
Common situations: Tight 'ulimit -v' or MemoryMax on user sessions; hosts under heavy memory pressure when starting rootless containers; first podman command in a session (when the pause process is created).
Related errors
- malloc: %m
- realloc buffer: %m
- save socket listen environments error: %m
- pause.pid file refers to PID %ld which is not a pause proces
- cannot retrieve cmd line
AI-assisted analysis of podman-container-tools/podman@a2409076ef (2026-08-15).
Data as JSON: /api/errors/fb3e8235e5ef3dd0.
Report an issue: GitHub.