macOS: Queued message submission fails due to queue_1.sqlite corruption (code 11) and persists after restart
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
앱 번들 메타데이터에서 확인: ChatGPT/Codex desktop 26.908.40834 (build 8881).
번들에 포함된 실행 파일: codex-cli 0.154.0-alpha.6.2.
확인일: 2026-09-12.
What subscription do you have?
이 보고에는 구독 정보를 포함하지 않았습니다. 실패는 로컬 대기열 저장 단계에서 확인됐습니다.
What platform is your computer?
macOS 26.5.1 (25F80); uname -mprs: Darwin 25.5.0 arm64 arm.
What issue are you seeing?
답변 생성 중 다음 메시지를 큐에 추가하면 메시지 제출이 실패했습니다. 답변 생성이 끝난 뒤 보내는 일반 메시지는 정상 동작했습니다. 앱 재시작으로는 해결되지 않았습니다.
화면 및 앱 로그의 정확한 오류:
queued submission operation failed: queue storage failed: thread-store internal error: queue storage failed: error returned from database: (code: 11) database disk image is malformed
앱 로그에서는 thread/queue/list 및 Failed to load queued follow-ups에도 동일 오류가 반복됐습니다.
~/.codex/queue_1.sqlite를 읽기 전용으로 검사했으며, PRAGMA quick_check에서 다음 오류를 확인했습니다:
*** in database main ***
Tree 10 page 10: btreeInitPage() returns error code 11
Tree 5 page 5: btreeInitPage() returns error code 11
Tree 7 page 7: btreeInitPage() returns error code 11
Tree 6 page 6: btreeInitPage() returns error code 11
Tree 8 page 8: btreeInitPage() returns error code 11
Tree 9 page 9: btreeInitPage() returns error code 11
Error: stepping, database disk image is malformed (11)
SELECT count(*) FROM queued_items도 같은 오류로 실패했습니다. 당시 데이터 볼륨의 여유 공간은 약 48 GiB였습니다. 저장 공간이 가득 찬 상태는 아니었지만, 과거 디스크 상태나 손상의 최초 원인까지 확인한 것은 아닙니다.
What steps can reproduce the bug?
실사용 증상:
- 대화에서 답변 생성을 시작합니다.
- 생성 중 다음 메시지를 대기열에 추가합니다.
- 위 오류로 접수가 실패합니다.
- 생성이 끝난 뒤 일반 메시지를 보내면 동작합니다.
- 앱을 재시작해도 대기열 오류가 지속됩니다.
손상된 저장소에 대한 앱의 동작은 설치된 번들 실행 파일을 이용해 별도의 폐기 가능한 임시 CODEX_HOME에서 검증했습니다. 실제 사용자 데이터나 인증 파일은 임시 환경에 복사하지 않았습니다.
- 임시 환경에서
codex app-server --stdio를 실행하고 초기화한 뒤 테스트 대화와 대기열을 생성합니다. - 해당 임시 서버를 종료하고 임시 DB의 WAL을 체크포인트합니다.
- 폐기 가능한 임시 DB에 한해서,
queued_items/queued_thread_revisions테이블과 인덱스의 루트 페이지를 손상시킵니다. - 같은 임시 서버를 다시 실행해 같은 대화에
thread/queue/list를 요청하면 실제 화면과 동일한 SQLite code 11 오류가 반환됩니다. - 임시 서버를 종료하고 대기열 DB 및 보조 파일만 백업·분리합니다.
- 재실행하면 대기열 DB가 재생성되며, 같은 대화의
thread/queue/list와thread/queue/add가 성공합니다. 새 DB의PRAGMA quick_check결과는ok입니다.
이 실험은 손상 이후의 실패 및 복구 경로를 재현한 것입니다. 실사용 중 최초 손상을 발생시킨 원인을 재현했다는 뜻은 아닙니다.
What is the expected behavior?
대기열에 메시지를 안정적으로 저장하고, 저장소 손상이 발견되면 반복적인 저수준 오류 대신 사용자가 이해할 수 있는 복구 안내를 제공해야 합니다.
재발 방지를 위해 아래를 조사·검토해 주시기 바랍니다:
- queue DB 쓰기, 연결 종료, 마이그레이션 및 여러 프로세스의 접근 과정에서 손상이 발생할 수 있는 경로 조사.
- code 11 발생 시 대기 중인 메시지를 보존하는 백업/격리와 복구 절차 제공. 대기 메시지를 조용히 삭제하지 않기.
- 큐 조회와 추가 양쪽에 손상 DB를 이용한 회귀 테스트 추가.
- 기존 대화 기록을 건드리지 않고 복구할 수 있는 제품 내 기능 및 명확한 안내 제공.
Additional information
실제 사용자는 앱과 Codex 프로세스가 종료된 상태에서 queue_1.sqlite 및 존재하는 -wal/-shm 파일만 전체 백업·검증한 뒤 분리하는 스크립트를 실행했습니다. 기존 대화 기록 파일은 이 조치의 대상이 아니었습니다. 앱 재실행 후 사용자가 문제가 해결됐다고 확인했습니다.
스크립트는 실제 적용 전에 별도 임시 데이터로 12개 테스트(파일 사용 중 차단, 백업/복원, 실패 처리, 강제 종료 후 복원 등)를 통과했습니다. 이 조치는 복구 우회책이며 최초 손상 원인을 해결한 제품 패치가 아닙니다.
오류 확인 당시 두 Codex 프로세스가 같은 대기열 파일을 열고 있는 것이 관찰됐으나, 이것이 원인이라는 증거는 없습니다.
개인 대화 내용, 원본/손상 데이터베이스, 인증 정보, 원본 전체 로그, 사용자별 대화 ID는 이 공개 보고에 첨부하지 않았습니다.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with queue_1.sqlite handling and the app-server --stdio entry point, focusing on thread/queue/list and thread/queue/add. Trace queue writes, connection shutdown, migrations, and concurrent access, then review the queued_items and queued_thread_revisions tables. Done means corruption is handled without silently losing messages, with recovery guidance and regression coverage for both queue operations.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, sqlite
- Domain
- backend-api-design, databases
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100