Skip to content

[Windows][26.924.22138] Upward history pagination continues while idle, disrupts scrolling and precedes repeated renderer crashes #49255

Open

Description

@LuckRef

What version of the Codex App are you using (From "About Codex" dialog)?

App: 26.924.22138, build 11645, production channel.
Microsoft Store package: OpenAI.Codex 26.924.2738.0.

What subscription do you have?

Not specified in this public report. The failure occurs during desktop history navigation, not as a reported usage-limit error.

What platform is your computer?

Windows 11 Pro N, 10.0.26200, x64.
Intel Core i5-13600KF; NVIDIA RTX 4070 Ti; approximately 31.86 GiB physical RAM.

What issue are you seeing?

The conversation history keeps loading older messages upward even after I stop using the mouse and keyboard. Some of my conversations are extremely long. This also disrupts scrolling. Repeatedly, the app logo reappears and the entire UI reloads, without the outer window closing.

This is seriously disrupting work I need to perform now. A UI crash also interferes with supervising ongoing work, even when the backend stays alive.

I am filing this focused report for the idle upward-pagination / scroll behavior and its measured timing around crashes, rather than claiming a proven new root cause. Related renderer reports: #48938 (same app/package build), #37541, and #37694. Please merge or cross-reference as appropriate if engineering confirms the same cause.

Read-only evidence collected on 2026-09-29

  • Six retained Crashpad sidecars have capture_kind=crash and ptype=renderer: two on September 28 and four on September 29.
  • Today's four artifacts were modified at 08:56:07, 09:03:57, 09:18:45 and 09:22:05, America/Santiago, UTC-03:00. These are sidecar filesystem timestamps, not native exception timestamps.
  • The desktop main process and its local codex.exe app-server retained their September 28 06:51 start times throughout inspection. This was not a complete restart of those processes.
  • The session file for the conversation I identified as suspicious was 1,513,615,413 bytes, approximately 1.514 GB / 1.410 GiB, at 09:32:17 local. Its content was not exported or read in full. This is disk size, not renderer memory.
  • That conversation appears in history-response activity within 30 seconds before three of today's four crashes. Other conversations also appear in one of those windows.

The following counts include only logged AppServerConnection response_routed events for the two history methods:

Crash artifact time (local) thread/items/list responses in prior 30 s thread/turns/list responses in prior 30 s ResizeObserver errors in prior 30 s
08:56:07 9 4 3
09:03:57 0 0 0
09:18:45 247 46 10
09:22:05 42 8 10

These are logged responses, not unique pages, concurrent requests, or proof of repeated cursors. The 09:03:57 event does not show the same pattern in this window, so pagination has not been established as the sole cause.

The inspected main-log snapshot, 06:15:04 to 09:27:00 local, contains:

  • 663 selected history responses;
  • 229 occurrences of ResizeObserver loop completed with undelivered notifications.;
  • 23 Conversation state not found messages;
  • 11 No promise for request ID messages;
  • four React root render requested entries, following the four crashes.

For the 09:22 event:

  • 09:21:58 through 09:22:03: repeated ResizeObserver errors during history activity;
  • 09:22:05.186 approximately: renderer Crashpad sidecar;
  • 09:22:07.043: React root render requested;
  • 09:22:07.457: No promise for request ID;
  • 09:22:08.388: Conversation state not found.

These messages do not demonstrate permanent loss of conversation data.

What steps can reproduce the bug?

This is a recurring user-observed pattern, not yet a deterministic controlled reproduction. I did not intentionally stress/restart the app during diagnosis because work was active.

  1. Use the Windows desktop app with a very long local conversation.
  2. Open or navigate toward older messages until history loading begins.
  3. Stop all mouse-wheel, keyboard and scrollbar input.
  4. Observe whether older-history loading reaches an idle state or continues automatically.
  5. Observe scrolling behavior and, if a reload happens, correlate renderer termination with the history/layout events.
  6. Compare with a short conversation and a synthetic long text-only history.

The exact initial trigger (opening, restoring position, or an initial upward scroll) remains to be isolated.

What is the expected behavior?

  • Fetch a bounded page/prefetch budget and return to idle; do not involuntarily walk the entire history.
  • Keep a stable visible-message anchor while prepending older messages.
  • Avoid repeated-cursor / no-progress loops and duplicate in-flight loads.
  • Bound retained/rendered history and memory for inactive chats.
  • Keep the UI usable for supervising ongoing tasks.
  • If the renderer fails, provide a supported recovery path that preserves active work.

Additional information

Uncertainty: There is no native exception stack, pre-crash renderer heap capture, or cursor trace in this evidence. OOM, a memory leak, an image-specific cause and a GPU cause are not confirmed. ResizeObserver errors may be symptoms rather than the cause.

At the initial resource sample, approximately 9.1 GiB RAM and 1832 GiB disk space were free. These were not synchronized to the crash instant and do not exclude a per-process memory limit. A later app-server sample was about 1.085 GiB private memory, so this is not a measured reproduction of the >16 GB app-server case in #37694.

No processes were killed, histories deleted, caches reset, configuration changed or third-party repair tools installed. Store update availability could not be determined by the information-only check.

Request: Please investigate the interaction between idle upward pagination, scroll anchoring/layout and renderer recovery on this build, and provide a supported immediate mitigation that preserves existing chats and running tasks. Please identify a fixed version when available.

A privacy-reviewed extended report and selected CSV/JSON evidence are available in a small local ZIP for a secure support channel. No raw rollouts, conversation titles/IDs, project paths, account details, screenshots or credentials are included here.

Activity

  1. added
    bugSomething isn't working
    appIssues related to the Codex desktop app
    windows-osIssues related to Codex on Windows systems
    sessionIssues involving session (thread) management, resuming, forking, naming, archiving
    on Sep 29, 2026
  2. LuckRef commented on Oct 11, 2026

    @LuckRef
    Author

    Update: still occurring on 2026-10-11, with 32 renderer crashes in 24 hours

    This is the same recurring user-observed problem reported here on September 29, not a first occurrence. It continues to cause major delays and repeatedly interrupts work and supervision of ongoing tasks.

    Current environment

    • Codex standalone desktop app on Windows x64.
    • Installed Microsoft Store package OpenAI.Codex: 26.1002.7124.0 (package metadata, not the About-dialog version).
    • Local task, native Windows/PowerShell; not WSL or Cloud.

    Measured 24-hour window

    2026-10-10 17:13:29 UTC through 2026-10-11 17:13:29 UTC (14:13:29 to 14:13:29, UTC-03:00).

    • 32 distinct retained Crashpad sidecars, all containing:
      {"capture_kind":"crash","osarch":"x86_64","ptype":"renderer"}
    • 32 React root render requested events for the primary window (windowId=1, rendererWebContentsId=1), each approximately 1.5–2.2 seconds after a corresponding sidecar's filesystem modification time.
    • The main ChatGPT.exe process remained alive with the same start time predating the window. These are renderer crashes/UI recoveries, not 32 full application-process restarts.
    • Unique sidecar filenames were counted from one Crashpad directory; mirrored/virtualized Windows paths were not counted twice.
    • Sidecar timestamps are filesystem timestamps, not native exception timestamps. Exact exception and root cause remain unknown.

    Selected examples (UTC):

    Crash sidecar timestamp Subsequent UI root render
    Oct 10 20:52:26.028 20:52:27.620
    Oct 10 22:37:17.532 22:37:19.526
    Oct 11 13:36:15.849 13:36:17.346
    Oct 11 16:54:59.547 16:55:01.140
    Oct 11 17:02:42.426 17:02:43.928
    Oct 11 17:09:21.986 17:09:23.669

    Several sequences recur every few minutes. ResizeObserver loop completed with undelivered notifications also appears in the logs, but these errors were not counted as additional crashes and are not established as the cause.

    User-observed behavior and impact

    Opening this very long conversation causes older history to load upward automatically without scrolling. The interface then reloads after a short time; returning to the same conversation reproduces the pattern. Other chats do not show the same user-observed behavior. This is an affected-session reproduction, not a clean-install minimal reproducer, and not every crash has been independently attributed to a specific history request.

    The ongoing interruptions force repeated UI recovery, context recovery and rechecking. This has been extremely frustrating and materially delays work. Preserving the complete conversation is essential; deleting history or abandoning it is not an acceptable resolution.

    A read-only codex migrate-rollouts inspection of the affected chat returned already_paginated and bytes_processed=0; no migration was applied. OOM, GPU failure, a specific cursor loop and permanent data loss have not been established.

    Request

    Please investigate the persistent idle-history loading/renderer recovery behavior and provide a supported mitigation or fixed version that preserves history and ongoing work. The private support case has also been escalated; account-specific usage/credit review is being kept in that private channel.

    This public update excludes account email, chat/session identifiers, project details, personal paths, raw logs, transcripts, screenshots and memory dumps.

  3. LuckRef commented on Oct 12, 2026

    @LuckRef
    Author

    Follow-up on 2026-10-12: please provide a concrete engineering response

    This issue was first reported here on September 29. Yesterday's update documents 32 renderer crashes in a measured 24-hour window, followed by UI reconstruction while the main process stayed alive. There is still no human engineering response on this issue.

    The repeated interruptions and recovery work have caused substantial delays. The affected conversation is needed for ongoing work, so a supported solution must preserve its history.

    Please confirm:

    1. Whether this report has been triaged and which team is investigating the idle upward-pagination/renderer crash behavior.
    2. Whether a fix is available, and the exact Windows app/package version containing it.
    3. The supported immediate mitigation if a fix has not shipped, and an estimated next update.

    If this belongs under another existing issue, please link the canonical issue and carry forward the October 11 crash evidence so it is not lost. A private support case has also been escalated, including the request to review usage and possible credit restoration/compensation; that account-specific decision remains in the private support channel.

    Please acknowledge the longstanding disruption and provide an actionable response. No additional crash count or root cause is claimed in this follow-up.

  4. LuckRef commented on Oct 12, 2026

    @LuckRef
    Author

    Reproducible technical evidence and collector source (2026-10-12)

    This update provides the actual sanitized event dataset, machine-readable summary and complete PowerShell collector, rather than relying only on a narrative.

    Interval (UTC) Renderer crash artifacts Unique UI root initializations One-to-one matches within 10 seconds
    Oct 10 17:13:29.240 to Oct 11 17:13:29.240 32 32 32
    Oct 11 12:05:10 to Oct 12 12:05:10 23 26 23
    Oct 10 17:13:29.240 to Oct 12 12:05:10, collected directly as one interval 39 42 39

    The two 24-hour windows overlap. Their counts must not be added. The combined collection directly counts 39 distinct retained artifacts, with no unmatched artifacts or invalid sidecars. The three extra UI initializations are not classified as crashes.

    Latest observed event and version

    The newest retained renderer crash artifact is dated 2026-10-12 12:02:49.208 UTC, followed by a primary-window root initialization at 12:02:51.259 UTC. Its metadata is capture_kind=crash, ptype=renderer, osarch=x86_64.

    The corresponding Oct 12 UI initialization is in the log of the current main process. That process's executable package version is 26.1007.2314.0, verified from its executable path; its start time is 10:24:00.599 UTC on Oct 12. This establishes a renderer failure/UI recovery observation during the current version's run. It does not establish the native exception or that every historical event used this version. The earlier Oct 10–11 report observed package 26.1002.7124.0.

    Collection and validation

    • Collector executed with PowerShell 7.6.5.
    • Daily logs are streamed, including actively written logs using read/write file sharing.
    • Only timestamps, numeric window IDs, sidecar classification/architecture and allowlisted aggregate error counts are retained.
    • Root events are deduplicated by timestamp/window/web-contents ID.
    • Each artifact is matched to the first unused subsequent root initialization within 10 seconds.
    • The original 32/32 collection was reproduced; the latest and combined collections also passed row-count, unique-match, delay-window and CSV SHA-256 checks.
    • The output below includes no usernames, account emails, conversation IDs, private paths, transcript contents, credentials or native memory dumps.

    Limitations: artifact times are filesystem LastWriteTimeUtc, not native exception timestamps. Timing correlation does not identify a responsible conversation, OOM allocation, GPU failure or root cause. Error counts cover the inspected app logs rather than exclusively this conversation, and are not additional crashes. The script is a diagnostic collector, not an application patch or a synthetic minimal crash reproducer.

    Complete combined summary

    {
      "SchemaVersion": 1,
      "StartUtc": "2026-10-10T17:13:29.240Z",
      "EndUtc": "2026-10-12T12:05:10.000Z",
      "RendererCrashArtifacts": 39,
      "UniqueUIRootRenderEvents": 42,
      "MatchedArtifactsWithin10Seconds": 39,
      "UnmatchedCrashArtifacts": 0,
      "InvalidSidecars": 0,
      "LogFilesRead": 18,
      "AllowlistedErrorOccurrences": {
        "ResizeObserver loop completed with undelivered notifications": 789,
        "Conversation state not found": 759,
        "No turns for conversation": 2570,
        "No promise for request ID": 1
      },
      "EventsCsvSHA256": "D68A3F6DC78F036FB14EF1AFC1F433B97AD4D2142E75A142A12094D169E06978",
      "Limitations": [
        "Crash artifact times are filesystem LastWriteTimeUtc, not native exception times.",
        "A temporal UI match does not identify the responsible conversation or root cause.",
        "Error occurrences are not additional crashes.",
        "Only retained artifacts and the specified log directories are counted.",
        "The collector does not inspect transcripts, credentials, native dumps or process memory."
      ]
    }
    Complete 39-event CSV
    "Event","CrashArtifactTimeUtc","CaptureKind","ProcessType","Architecture","UIRootRenderUtc","DelaySeconds","RendererWindowId","RendererWebContentsId"
    "1","2026-10-10T20:52:26.028Z","crash","renderer","x86_64","2026-10-10T20:52:27.620Z","1.592","1","1"
    "2","2026-10-10T21:07:29.053Z","crash","renderer","x86_64","2026-10-10T21:07:30.640Z","1.587","1","1"
    "3","2026-10-10T21:57:27.469Z","crash","renderer","x86_64","2026-10-10T21:57:29.084Z","1.614","1","1"
    "4","2026-10-10T22:34:14.347Z","crash","renderer","x86_64","2026-10-10T22:34:15.933Z","1.586","1","1"
    "5","2026-10-10T22:37:17.532Z","crash","renderer","x86_64","2026-10-10T22:37:19.526Z","1.994","1","1"
    "6","2026-10-10T22:43:45.388Z","crash","renderer","x86_64","2026-10-10T22:43:46.993Z","1.604","1","1"
    "7","2026-10-10T22:49:24.475Z","crash","renderer","x86_64","2026-10-10T22:49:26.055Z","1.579","1","1"
    "8","2026-10-10T22:52:26.802Z","crash","renderer","x86_64","2026-10-10T22:52:28.863Z","2.060","1","1"
    "9","2026-10-10T23:04:17.795Z","crash","renderer","x86_64","2026-10-10T23:04:19.546Z","1.751","1","1"
    "10","2026-10-10T23:09:55.435Z","crash","renderer","x86_64","2026-10-10T23:09:57.624Z","2.188","1","1"
    "11","2026-10-11T02:08:29.592Z","crash","renderer","x86_64","2026-10-11T02:08:31.465Z","1.873","1","1"
    "12","2026-10-11T02:11:32.916Z","crash","renderer","x86_64","2026-10-11T02:11:34.613Z","1.696","1","1"
    "13","2026-10-11T02:19:39.633Z","crash","renderer","x86_64","2026-10-11T02:19:41.290Z","1.657","1","1"
    "14","2026-10-11T02:26:20.599Z","crash","renderer","x86_64","2026-10-11T02:26:22.138Z","1.539","1","1"
    "15","2026-10-11T09:34:58.937Z","crash","renderer","x86_64","2026-10-11T09:35:00.450Z","1.513","1","1"
    "16","2026-10-11T09:39:28.546Z","crash","renderer","x86_64","2026-10-11T09:39:30.078Z","1.532","1","1"
    "17","2026-10-11T13:31:49.479Z","crash","renderer","x86_64","2026-10-11T13:31:50.994Z","1.514","1","1"
    "18","2026-10-11T13:36:15.849Z","crash","renderer","x86_64","2026-10-11T13:36:17.346Z","1.496","1","1"
    "19","2026-10-11T13:40:44.476Z","crash","renderer","x86_64","2026-10-11T13:40:46.286Z","1.810","1","1"
    "20","2026-10-11T13:45:19.416Z","crash","renderer","x86_64","2026-10-11T13:45:21.182Z","1.765","1","1"
    "21","2026-10-11T13:49:06.035Z","crash","renderer","x86_64","2026-10-11T13:49:07.784Z","1.748","1","1"
    "22","2026-10-11T14:02:06.903Z","crash","renderer","x86_64","2026-10-11T14:02:08.443Z","1.540","1","1"
    "23","2026-10-11T15:41:26.935Z","crash","renderer","x86_64","2026-10-11T15:41:28.481Z","1.546","1","1"
    "24","2026-10-11T16:36:51.067Z","crash","renderer","x86_64","2026-10-11T16:36:52.686Z","1.619","1","1"
    "25","2026-10-11T16:41:27.464Z","crash","renderer","x86_64","2026-10-11T16:41:29.056Z","1.591","1","1"
    "26","2026-10-11T16:45:26.380Z","crash","renderer","x86_64","2026-10-11T16:45:28.049Z","1.668","1","1"
    "27","2026-10-11T16:51:57.047Z","crash","renderer","x86_64","2026-10-11T16:51:58.601Z","1.553","1","1"
    "28","2026-10-11T16:54:59.547Z","crash","renderer","x86_64","2026-10-11T16:55:01.140Z","1.592","1","1"
    "29","2026-10-11T16:59:27.851Z","crash","renderer","x86_64","2026-10-11T16:59:29.401Z","1.550","1","1"
    "30","2026-10-11T17:02:42.426Z","crash","renderer","x86_64","2026-10-11T17:02:43.928Z","1.501","1","1"
    "31","2026-10-11T17:06:32.461Z","crash","renderer","x86_64","2026-10-11T17:06:34.033Z","1.571","1","1"
    "32","2026-10-11T17:09:21.986Z","crash","renderer","x86_64","2026-10-11T17:09:23.669Z","1.682","1","1"
    "33","2026-10-11T17:21:04.876Z","crash","renderer","x86_64","2026-10-11T17:21:06.467Z","1.590","1","1"
    "34","2026-10-11T17:25:14.601Z","crash","renderer","x86_64","2026-10-11T17:25:16.411Z","1.809","1","1"
    "35","2026-10-11T17:48:18.058Z","crash","renderer","x86_64","2026-10-11T17:48:19.938Z","1.880","1","1"
    "36","2026-10-11T17:55:24.192Z","crash","renderer","x86_64","2026-10-11T17:55:25.972Z","1.780","1","1"
    "37","2026-10-11T18:04:08.131Z","crash","renderer","x86_64","2026-10-11T18:04:09.805Z","1.674","1","1"
    "38","2026-10-11T18:48:46.010Z","crash","renderer","x86_64","2026-10-11T18:48:47.712Z","1.701","1","1"
    "39","2026-10-12T12:02:49.208Z","crash","renderer","x86_64","2026-10-12T12:02:51.259Z","2.050","1","1"
    Complete diagnostic collector: Collect-CodexRendererEvidence.ps1

    Save the source as Collect-CodexRendererEvidence.ps1, then run:

    ./Collect-CodexRendererEvidence.ps1 -StartUtc '2026-10-10T17:13:29.240Z' -EndUtc '2026-10-12T12:05:10Z' -OutputDirectory './output'

    For a different installation, override LogRoot and CrashRoot with one canonical location. Do not combine mirrored Windows paths. It reads the specified logs/artifacts and writes only its own CSV/JSON output.

    param(
        [Parameter(Mandatory = $true)][datetimeoffset]$StartUtc,
        [Parameter(Mandatory = $true)][datetimeoffset]$EndUtc,
        [Parameter(Mandatory = $true)][string]$OutputDirectory,
        [string]$LogRoot = (Join-Path $env:LOCALAPPDATA 'Codex\Logs'),
        [string]$CrashRoot = (Join-Path $env:APPDATA 'Codex\web\Codex\Crashpad\reports')
    )
    
    $ErrorActionPreference = 'Stop'
    $StartUtc = $StartUtc.ToUniversalTime()
    $EndUtc = $EndUtc.ToUniversalTime()
    if ($EndUtc -le $StartUtc) { throw 'EndUtc must be later than StartUtc.' }
    if (!(Test-Path -LiteralPath $LogRoot -PathType Container)) { throw 'Log directory not found.' }
    if (!(Test-Path -LiteralPath $CrashRoot -PathType Container)) { throw 'Crash directory not found.' }
    
    $renders = [System.Collections.Generic.List[object]]::new()
    $renderKeys = [System.Collections.Generic.HashSet[string]]::new()
    $errorNames = @(
        'ResizeObserver loop completed with undelivered notifications',
        'Conversation state not found',
        'No turns for conversation',
        'No promise for request ID'
    )
    $errorCounts = [ordered]@{}
    foreach ($name in $errorNames) { $errorCounts[$name] = 0 }
    $logFilesRead = 0
    
    # Stream logs and retain only timestamps, numeric window IDs and allowlisted counts.
    for ($day = $StartUtc.UtcDateTime.Date; $day -le $EndUtc.UtcDateTime.Date; $day = $day.AddDays(1)) {
        $dayDirectory = Join-Path (Join-Path (Join-Path $LogRoot $day.ToString('yyyy')) $day.ToString('MM')) $day.ToString('dd')
        if (!(Test-Path -LiteralPath $dayDirectory -PathType Container)) { continue }
        foreach ($file in Get-ChildItem -LiteralPath $dayDirectory -File -Filter '*.log') {
            $logFilesRead++
            $sharing = [System.IO.FileShare]::ReadWrite -bor [System.IO.FileShare]::Delete
            $stream = [System.IO.File]::Open($file.FullName, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, $sharing)
            $reader = [System.IO.StreamReader]::new($stream)
            try {
                while (($line = $reader.ReadLine()) -ne $null) {
                    if ($line -notmatch '^(?<ts>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d+Z)\s') { continue }
                    $time = [datetimeoffset]::Parse($Matches.ts, [cultureinfo]::InvariantCulture)
                    if ($time -lt $StartUtc -or $time -gt $EndUtc) { continue }
                    if ($line.Contains('React root render requested')) {
                        $windowId = $null
                        $contentsId = $null
                        if ($line -match '\brendererWindowId=(\d+)\b') { $windowId = [int]$Matches[1] }
                        if ($line -match '\brendererWebContentsId=(\d+)\b') { $contentsId = [int]$Matches[1] }
                        $key = '{0}|{1}|{2}' -f $time.ToString('o'), $windowId, $contentsId
                        if ($renderKeys.Add($key)) {
                            $renders.Add([pscustomobject]@{ Time = $time; WindowId = $windowId; ContentsId = $contentsId; Key = $key })
                        }
                    }
                    if ($line -match '^\S+\s+error\s') {
                        foreach ($name in $errorNames) {
                            if ($line.Contains($name)) { $errorCounts[$name]++ }
                        }
                    }
                }
            }
            finally { $reader.Dispose() }
        }
    }
    if ($logFilesRead -eq 0) { throw 'No daily log files found for this interval.' }
    
    $crashes = [System.Collections.Generic.List[object]]::new()
    $invalidSidecars = 0
    foreach ($file in Get-ChildItem -LiteralPath $CrashRoot -File -Filter '*_sidecar.json') {
        $time = [datetimeoffset]::new($file.LastWriteTimeUtc)
        if ($time -lt $StartUtc -or $time -gt $EndUtc) { continue }
        try { $metadata = Get-Content -LiteralPath $file.FullName -Raw | ConvertFrom-Json }
        catch { $invalidSidecars++; continue }
        if ($metadata.capture_kind -eq 'crash' -and $metadata.ptype -eq 'renderer') {
            $crashes.Add([pscustomobject]@{ Time = $time; CaptureKind = 'crash'; ProcessType = 'renderer'; Architecture = [string]$metadata.osarch })
        }
    }
    
    $orderedRenders = @($renders | Sort-Object Time)
    $usedRenders = [System.Collections.Generic.HashSet[string]]::new()
    $rows = [System.Collections.Generic.List[object]]::new()
    $eventNumber = 0
    foreach ($crash in $crashes | Sort-Object Time) {
        $eventNumber++
        # Match at most one subsequent UI initialization per artifact, within 10 seconds.
        $render = $orderedRenders | Where-Object {
            $_.Time -ge $crash.Time -and $_.Time -le $crash.Time.AddSeconds(10) -and !$usedRenders.Contains($_.Key)
        } | Select-Object -First 1
        $renderTime = $null
        $delay = $null
        if ($null -ne $render) {
            [void]$usedRenders.Add($render.Key)
            $renderTime = $render.Time.ToString('yyyy-MM-ddTHH:mm:ss.fffZ')
            $delay = [math]::Round(($render.Time - $crash.Time).TotalSeconds, 3).ToString('0.000', [cultureinfo]::InvariantCulture)
        }
        $rows.Add([pscustomobject][ordered]@{
            Event = $eventNumber
            CrashArtifactTimeUtc = $crash.Time.ToString('yyyy-MM-ddTHH:mm:ss.fffZ')
            CaptureKind = $crash.CaptureKind
            ProcessType = $crash.ProcessType
            Architecture = $crash.Architecture
            UIRootRenderUtc = $renderTime
            DelaySeconds = $delay
            RendererWindowId = $(if ($null -ne $render) { $render.WindowId } else { $null })
            RendererWebContentsId = $(if ($null -ne $render) { $render.ContentsId } else { $null })
        })
    }
    
    [void](New-Item -ItemType Directory -Path $OutputDirectory -Force)
    $csvPath = Join-Path $OutputDirectory 'renderer-events.csv'
    $rows | Export-Csv -LiteralPath $csvPath -NoTypeInformation -Encoding utf8
    $summary = [ordered]@{
        SchemaVersion = 1
        StartUtc = $StartUtc.ToString('yyyy-MM-ddTHH:mm:ss.fffZ')
        EndUtc = $EndUtc.ToString('yyyy-MM-ddTHH:mm:ss.fffZ')
        RendererCrashArtifacts = $crashes.Count
        UniqueUIRootRenderEvents = $renders.Count
        MatchedArtifactsWithin10Seconds = $usedRenders.Count
        UnmatchedCrashArtifacts = $crashes.Count - $usedRenders.Count
        InvalidSidecars = $invalidSidecars
        LogFilesRead = $logFilesRead
        AllowlistedErrorOccurrences = $errorCounts
        EventsCsvSHA256 = (Get-FileHash -LiteralPath $csvPath -Algorithm SHA256).Hash
        Limitations = @(
            'Crash artifact times are filesystem LastWriteTimeUtc, not native exception times.',
            'A temporal UI match does not identify the responsible conversation or root cause.',
            'Error occurrences are not additional crashes.',
            'Only retained artifacts and the specified log directories are counted.',
            'The collector does not inspect transcripts, credentials, native dumps or process memory.'
        )
    }
    $summary | ConvertTo-Json -Depth 5 | Set-Content -LiteralPath (Join-Path $OutputDirectory 'summary.json') -Encoding utf8
    $summary | ConvertTo-Json -Depth 5

    Collector SHA-256: 06746F94EA5D97781948520485717DA3748987B67EA48E6D51BB752B1CDB3A06

    Combined CSV SHA-256: D68A3F6DC78F036FB14EF1AFC1F433B97AD4D2142E75A142A12094D169E06978

    Please use this evidence to investigate the primary renderer failure and advise which targeted native crash capture is needed next and a secure upload channel for it. The public dataset deliberately omits full logs/transcripts and dumps.

  5. kazuyachen1986-rgb commented on Oct 14, 2026

    @kazuyachen1986-rgb

    Windows 26.1007: captured native dump confirms V8 main-isolate OOM during dense history loading

    Submitted with the affected user's authorization. The user continues to experience white-screen reloads and changed scroll position during normal Codex work.

    Environment verified locally:

    • Windows x64, build 26200.
    • Registered package: OpenAI.Codex 26.1007.9446.0.
    • Internal app version: 26.1007.71326, build 20398, production.
    • Chromium: 155.0.8059.40.
    • The built-in updater returned up_to_date.

    A bounded local capture obtained and validated a renderer minidump at 2026-10-14 22:49:40 UTC. No live process was injected into or terminated for collection. The retained file has a valid MDMP header, 12 streams, and in-bounds stream descriptors.

    Confirmed diagnostic fields from this one dump:

    • Exception: 0xe0000008, Chromium's OOM exception.
    • ptype: renderer.
    • v8-oom-is-main-isolate: true.
    • v8-oom-location: CALL_AND_RETRY_LAST.
    • v8-oom-main-cage-size: 4096.00MB.
    • v8-oom-main-cage-last-alloc-status: ran out of reservation.
    • Main cage largest free region: 1.00MB; total free size: 112.75MB.
    • Last Mark-Compact retained approximately 3668.1MB; heap size approximately 3753.0MB.
    • Large-object space: 2429.14MB; old space: 1210.13MB.
    • The exception vector reported approximately 75.17GiB commit limit and 41.08GiB available commit, sampled by the OOM handler after the failure.

    The desktop log recorded 109 thread/items/list response_routed events in the preceding 30 seconds for the affected conversation. These are response counts, not unique pages or proof of a repeated cursor. The main process remained alive and the primary renderer was recreated immediately afterward.

    The current process was running with --disable-gpu. That mitigation therefore did not prevent this captured OOM. Official doctor checks reported state and thread-history database integrity as ok. No histories, indexes, authentication, or application binaries were changed.

    Interpretation and limits: this confirms V8 memory exhaustion for the captured failure. It does not identify the exact retaining application object, prove that previews or images are responsible, or establish the exception of every earlier crash. Raising a generic heap limit should not be proposed without addressing the captured 4096MB cage limit.

    Please investigate bounded history loading, retention of large JavaScript objects, and inactive-history eviction. Please provide a supported mitigation or the exact fixed Windows build that preserves complete histories and running tasks.

    Only this minimized technical summary is shared. No native dump, raw log, transcript, conversation ID, private path, account information, or screenshot is attached.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    appIssues related to the Codex desktop appbugSomething isn't workingsessionIssues involving session (thread) management, resuming, forking, naming, archivingwindows-osIssues related to Codex on Windows systems

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions