Public issue detail

Runaway CPU investigation for postgres: file not found retry at AllocSetCheck

postgres is stuck in a likely file not found retry loop: 2.83% of sampled CPU passed through AllocSetCheck, with repeated thread backtraces show 1 thread(s) around 0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path>.

highpackage: postgresql-18source: postgresql-18score: 106reports: 3successful triage

Last seen: 2026-09-20 04:49 UTC. Public JSON: /v1/issues/019d52d9-4c5a-7b12-bdba-e04944d36fff

Successful triage

Fixer did not find an honest diff-backed change in this source tree. Instead, it published the current best diagnosis and next steps so repeat sightings can converge on the real owner.

best triagecreated: 2026-09-20 02:40 UTCvalidation: ready

postgres likely remains stuck in a file-not-found retry loop. A diagnosis report and external handoff were created locally.

Likely owner

postgresql-18

Reason: workspace-acquisition

Suggested bug target: http://www.postgresql.org/

Next steps

  • File an upstream or vendor issue with the diagnosis bundle and package metadata.
  • Include the workspace acquisition note so maintainers know why no local source patch was attempted.

Technical snapshot

This is the clearest retained userspace thread cluster Fixer captured while the process was spinning.

Representative thread backtrace

  • Command: /usr/lib/postgresql/18/bin/postgres -D /tmp/postgis-pg18.jELB0R/data -F -h -p 47080 -k /tmp/postgis-pg18.jELB0R/socket -c fsync=off -c full_page_writes=off -c synchronous_commit=off
  • Why Fixer classified it this way: The trace keeps retrying file lookups that fail with ENOENT, which suggests a missing-file retry loop.
  • Thread summary: thread backtraces show 1 thread(s) around 0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path>
  • Contention signals: event-loop-wakeups, gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory. warning: Target and debugger are in different PID namespaces; thread lists and other data are likely unreliable. Connect to gdbserver inside the container. warning: Expected absolute pathname for libpthread in the inferior, but got target:<path> warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.
  • Repeated loop: mmap -> mmap -> mmap
  • Top syscalls: mmap x2448, read x1769, openat x1088, close x877
  • Package: postgresql-18 18.4-1.pgdg+1
  • Kernel: 6.17.10+deb14-amd64
  • Distribution: debian
0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path>
0x00007f95ab5906ad in __GI__IO_flush_all () from target:<path>
0x00007f95ab611a6d in epoll_wait () from target:<path>
0x000055865b9af2bb in WaitEventSetWait ()
0x000055865b92a48d in indexcol_is_bool_constant_for_query ()
0x000055865b92cc50 in PostmasterMain ()
0x000055865b621f20 in main ()

Possible duplicates

These are suggestions based on sanitized trigram similarity plus structured fields like package, subsystem, classification, and wait site. They are not auto-merged.

postgres is stuck in a likely file not found retry loop: 1.58% of sampled CPU passed through _dl_map_new_object, with repeated thread backtraces show 1 thread(s) around 0x00007fb038f9c687 in __GI__IO_flush_all () from target:<path>.

highpackage: postgresql-18source: postgresql-18score: 106reports: 1similarity: 99%

Why this looks related: same classification, same package, same source package, same subsystem, same target, same wait site

Last seen: 2026-10-21 03:01 UTC. Public page: /issues/019f9e46-ed87-7693-a004-3c6b0b260a51. Public JSON: /v1/issues/019f9e46-ed87-7693-a004-3c6b0b260a51

postgres is stuck in a likely file not found retry loop: 1.84% of sampled CPU passed through malloc, with repeated thread backtraces show 1 thread(s) around 0x00007f85b973a687 in __GI__IO_flush_all () from target:<path>.

highscore: 106reports: 1similarity: 99%

Why this looks related: same classification, same subsystem, same target, same wait site

Last seen: 2026-10-13 06:02 UTC. Public page: /issues/01a133a7-70dc-73b3-b590-4cd62ec20ac9. Public JSON: /v1/issues/01a133a7-70dc-73b3-b590-4cd62ec20ac9

postgres is stuck in a likely file not found retry loop: 1.57% of sampled CPU passed through hash_search_with_hash_value, with repeated thread backtraces show 1 thread(s) around 0x00007fbeaffa0687 in __GI__IO_flush_all () from target:<path>.

highpackage: postgresql-18source: postgresql-18score: 106reports: 1similarity: 99%

Why this looks related: same classification, same package, same source package, same subsystem, same target

Last seen: 2026-10-02 10:33 UTC. Public page: /issues/019f78b9-d301-7792-a0ea-d9bb6a05f05c. Public JSON: /v1/issues/019f78b9-d301-7792-a0ea-d9bb6a05f05c

postgres is stuck in a likely file not found retry loop: 2.27% of sampled CPU passed through XLogNeedsFlush, with repeated thread backtraces show 1 thread(s) around 0x00007f8ccb7fc687 in __GI__IO_flush_all () from target:<path>.

highscore: 106reports: 1similarity: 99%

Why this looks related: same classification, same subsystem, same target, same wait site

Last seen: 2026-09-30 03:07 UTC. Public page: /issues/01a0ee1d-0385-77b3-8bf7-d516edc62f39. Public JSON: /v1/issues/01a0ee1d-0385-77b3-8bf7-d516edc62f39

postgres is stuck in a likely file not found retry loop: 28.57% of sampled CPU passed through WaitEventSetWait, with repeated thread backtraces show 1 thread(s) around 0x00007f7f64417687 in __GI__IO_flush_all () from target:<path>.

highscore: 106reports: 1similarity: 99%

Why this looks related: same classification, same subsystem, same target, same wait site

Last seen: 2026-09-28 15:51 UTC. Public page: /issues/01a0e840-352c-74f0-a516-88ac9cf0a1d0. Public JSON: /v1/issues/01a0e840-352c-74f0-a516-88ac9cf0a1d0

postgres is stuck in a likely file not found retry loop: 4.33% of sampled CPU passed through next_uptodate_folio, with repeated thread backtraces show 1 thread(s) around 0x00007f6114aba687 in __GI__IO_flush_all () from target:<path>.

highpackage: postgresql-14source: linuxscore: 106reports: 3successful triagesimilarity: 93%

Why this looks related: same classification, same subsystem, same target, same wait site

Last seen: 2026-10-12 08:43 UTC. Public page: /issues/019d3a17-b958-7a60-86fd-5304e697f42c. Public JSON: /v1/issues/019d3a17-b958-7a60-86fd-5304e697f42c

Worker outcome summary

This issue has 2 recorded worker attempts. Only ready diffs and ready triage handoffs get dedicated public boards. Diagnosis-only reports and blocked attempts are summarized here so it is easier to see why work stalled.

1 ready triage handoffs
1 failed patch attempts

No ready patch attempts, diagnosis-only reports, explained impossible attempts, or other attempt states.

Most common blockers

  • rate-limit (1 attempt)
  • workspace-acquisition (1 attempt)

Published attempts

failed patch attempt

patch

postgres likely remains stuck in a file-not-found retry loop. The diagnosis was captured, but the patch proposal did not complete cleanly.

state: failedcreated: 2026-09-20 02:40 UTCvalidation: failed

Why it stopped

rate-limit

Failure details

  • Failure kind: rate-limit
  • Exit status: 1
  • Error: model: gpt-5.5 {"type":"thread.started","thread_id":"01a0bcb0-0ff4-70d2-a4f6-14a776dee401"} {"type":"turn.started"} {"type":"error","message":"exceeded retry limit, last status: 429 Too Many Requests, request id: f4e01863-48ba-4b55-bccb-8d1a6fe0e134"} {"type":"turn.failed","error":{"message":"exceeded retry limit, last status: 429 Too Many Requests, request id: f4e01863-48ba-4b55-bccb-8d1a6fe0e134"}}

Collected context

  • Subsystem: runaway-process
  • Diagnosis family: file-not-found-retry
  • Hot path: AllocSetCheck
  • Command: /usr/lib/postgresql/18/bin/postgres -D /tmp/postgis-pg18.jELB0R/data -F -h -p 47080 -k /tmp/postgis-pg18.jELB0R/socket -c fsync=off -c full_page_writes=off -c synchronous_commit=off
  • Thread backtrace summary: thread backtraces show 1 thread(s) around 0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path>
  • Source package: postgresql-18
  • Workspace source: upstream-git
  • Workspace acquisition: Mapped `postgresql-18` to the PostgreSQL upstream git default branch so source patches are prepared against upstream HEAD instead of the installed distro version.
  • Homepage: https://git.postgresql.org/git/postgresql.git
  • Implicated packages: libc6, linux-image-6.17.10+deb14-amd64
  • Contention signals: event-loop-wakeups, gdb-stderr: gdb: warning: Couldn't determine a path for the index cache directory. warning: Target and debugger are in different PID namespaces; thread lists and other data are likely unreliable. Connect to gdbserver inside the container. warning: Expected absolute pathname for libpthread in the inferior, but got target:<path> warning: Unable to find libthread_db matching inferior's thread library, thread debugging will not be available.

The trace keeps retrying file lookups that fail with ENOENT, which suggests a missing-file retry loop.

Representative threads

  • 1 thread(s): 0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path> -> 0x00007f95ab5906ad in __GI__IO_flush_all () from target:<path> -> 0x00007f95ab611a6d in epoll_wait () from target:<path> -> 0x000055865b9af2bb in WaitEventSetWait ()

Common frame clusters

  • 1 thread(s): 0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path> -> 0x00007f95ab5906ad in __GI__IO_flush_all () from target:<path> -> 0x00007f95ab611a6d in epoll_wait () from target:<path>

Raw thread backtrace

Thread 1 (process 1314307 "postgres"):
#0  0x00007f95ab590687 in __GI__IO_adjust_column () from target:<path>
#1  0x00007f95ab5906ad in __GI__IO_flush_all () from target:<path>
#2  0x00007f95ab611a6d in epoll_wait () from target:<path>
#3  0x000055865b9af2bb in WaitEventSetWait ()
#4  0x000055865b92a48d in indexcol_is_bool_constant_for_query ()
#5  0x000055865b92cc50 in PostmasterMain ()
#6  0x000055865b621f20 in main ()
Published session

Prompt

## Plan Pass

You are planning a fixer patch before any edits happen.

Read the evidence bundle at `./evidence.json`. The prepared workspace is `./workspace` and it was acquired via `upstream-git`. The original pre-edit snapshot is available at `./source` if you need to inspect it. For interpreter processes, plan from the script/application entrypoint evidence first and include the runtime only as a second investigation target unless the evidence proves a runtime bug.

Validation expectation: try the project-level build/test entrypoint from the workspace root before reporting only a focused leaf compile. Detected candidate(s): `./configure && make`, `meson setup build-fix && meson compile -C build-fix && meson test -C build-fix`, `make` and, if available, `make check`. If the project-level command fails because dependencies or generated files are missing, include the exact command and failure reason in `## Validation`, then run the narrowest relevant compile/test that is still reproducible from a clean checkout.

Upstream-style expectation: before planning or editing, check for contribution/style docs (`CONTRIBUTING`, `HACKING`, `README-hacking`, `README.md`, `docs/`, `dev-docs/`) and scan the touched subsystem for local helpers. If the project has wrappers for file IO, path-relative IO, process spawning, memory allocation, logging, locking, or platform compatibility, prefer those wrappers over generic libc/std APIs. For public upstream review, prepare the final patch against the upstream default integration branch, usually `master` or `main`; use installed or stable source trees for reproduction/backport validation, not as the default merge-request base unless the contribution docs explicitly say to target a stable branch. Do not invent a reproducer or user-visible failure that is not in the evidence bundle; if the evidence is profiler-only or indirect, describe it as a targeted mitigation or stop with a diagnosis instead of presenting a speculative patch as a confirmed bug fix. In the plan and final validation, name any such helper, convention, branch-base choice, or evidence limit you found, or say that no relevant local helper was found. Treat this as a `postgresql-18` upstream patch, not just a Debian-local workaround.

Codex subagent/fan-out expectation: for any non-trivial investigation, do not keep all checking in the lead context. Proactively spawn bounded leaf subagents for independent source inspection, duplicate/upstream search, implementation sanity checks, and verification while the lead owns integration. Use the newest available mini model for read-only scouts, and use `gpt-5.3-codex-spark` aggressively for tiny coding, test, and verification leaves even when the lead model is `gpt-5.5`. Pass model names explicitly when spawning. Keep subagents as leaves: tell them not to spawn their own agents, not to run recursive `codex review`, not to perform public/external/destructive actions, and not to duplicate the same live-state operation. Merge their evidence into the final patch/report instead of merely saying a subagent looked. Inspect the relevant code, nearby callers, project contribution docs, and local helper/compat APIs, but do not edit files in this pass.

Return a short markdown plan with these exact sections:

## Problem
## Evidence Confidence
## Proposed Subject
## Patch Plan
## Risks
## Validation

Classify `## Evidence Confidence` as exactly one of `reproduced`, `observed`, or `inferred`. Use `inferred` only for a no-patch diagnosis/report plan unless you can name the extra evidence you will collect before editing; inferred source patches are blocked by Fixer because they are not pull-request-ready. For `observed` source-patch plans, plan to say in the final `## Issue Connection` that the failure was observed by Fixer and not independently reproduced. If the plan touches authentication, authorization, credentials, cryptography, sandboxing, permissions, timing/throttling behavior, or PostgreSQL database-core behavior such as dynamic library resolution, extension loading, transaction semantics, locking, planner/executor behavior, catalog changes, or storage changes, treat it as high-risk: do not plan a source patch unless validation can reproduce the behavior and analyze the semantic impact; otherwise plan a no-patch diagnosis/report. The plan must explain how the proposed code change addresses the observed issue evidence, call out any prior Fixer patch that should be improved or replaced, reject awkward control flow such as avoidable `goto` if there is a cleaner bounded alternative, name any local helper APIs or maintainer conventions the patch should follow, and keep the intended maintainer-facing explanation clear enough that someone unfamiliar with the local complaint wording can still follow the fix. In `## Validation`, name the reproducible configure/build/test entrypoint you will try from the workspace root before any focused leaf compile or smoke check, and include one bounded independent reproduction attempt for the collected failure signal when it is safe and cheap. Do not plan to claim `reproduced` unless that reproduction command or test can actually show the failure.

Response

## Plan Pass



## Workflow Note

model: gpt-5.5

{"type":"thread.started","thread_id":"01a0bcb0-0ff4-70d2-a4f6-14a776dee401"}
{"type":"turn.started"}
{"type":"error","message":"exceeded retry limit, last status: 429 Too Many Requests, request id: f4e01863-48ba-4b55-bccb-8d1a6fe0e134"}
{"type":"turn.failed","error":{"message":"exceeded retry limit, last status: 429 Too Many Requests, request id: f4e01863-48ba-4b55-bccb-8d1a6fe0e134"}}

ready triage handoff

triage

postgres likely remains stuck in a file-not-found retry loop. A diagnosis report and external handoff were created locally.

state: readycreated: 2026-09-20 02:40 UTCvalidation: ready

Why it stopped

workspace-acquisition

Handoff

Likely owner: postgresql-18

Reason: workspace-acquisition

Suggested bug target: http://www.postgresql.org/

  • File an upstream or vendor issue with the diagnosis bundle and package metadata.
  • Include the workspace acquisition note so maintainers know why no local source patch was attempted.