openai / openai/codex

[App][Linux] Quick-access hotkey triggers SIGTRAP; explicit null binding prevents shortcut crashes

Open
#45,300 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

app bug Linux
Dominant language
Rust
Stars
125k
Forks
19.4k
PR merge metrics
PR metrics pending

Description

Summary

On Linux, invoking the Codex desktop quick-access window shortcut caused the entire desktop process to terminate with SIGTRAP. The configured command was hotkeyWindow, bound to Ctrl+Command+Shift+Z. The user initially observed crashes while editing a prompt and pressing Ctrl+Z, then reported Ctrl+Shift+Z and explicitly confirmed that pressing the configured shortcut immediately closed the app.

Explicitly disabling this command with "key": null, followed by restarting the app, resolved the tested shortcut crashes according to the user. This is a verified local workaround, not a demonstrated fix to the underlying native implementation.

Version and environment

  • Affected package: chatgpt 26.908.40834, installed desktop executable /usr/lib/chatgpt/ChatGPT.
  • Linux, Ubuntu 24.04, x86_64. The package version is from the installed package and Apport report, not the About dialog.
  • Subscription: not included in this investigation.
  • Crash timestamps below are September 14, 2026, Asia/Tbilisi (UTC+04:00).

Steps to reproduce on the affected installation

  1. In ~/.codex/keybindings.json, configure:

    [
      { "command": "hotkeyWindow", "key": "Ctrl+Command+Shift+Z" },
      { "command": "realtimeVoice", "key": "Ctrl+." }
    ]
    
  2. Fully quit and reopen the desktop app.

  3. Focus the prompt editor and type a disposable draft.

  4. Invoke the configured quick-access shortcut. The user also reported Ctrl+Shift+Z as a trigger; Ctrl+Z was the initial observation and has not been independently isolated as the same trigger.

  5. Observe that the whole desktop app closes immediately.

These steps describe the user's repeated manual reproduction on one installation, not an automated or cross-machine reproduction. Exact platform handling of the Command modifier has not been established in this investigation.

Expected behavior

The quick-access window should open or toggle without terminating the app. If an accelerator is unsupported or invalid on Linux, it should be rejected safely. Prompt Undo/Redo should not terminate the desktop process.

Observed crash evidence

The kernel recorded a native int3 trap in the main desktop process. The launcher independently recorded termination by SIGTRAP (signal 5).

Crash time Evidence Executable file offset
00:17:32 Kernel ChatGPT ... trap int3; Apport Signal: 5 0xac35211
01:58:05 Kernel ChatGPT ... trap int3; launcher SIGTRAP 0xac35211

The 01:58 crash reproduced after restoring the original app.asar from the exact installed .deb. Its MD5 matched the package manifest: 4e1f18bff1a0ac0242454f0e29ad7549. Thus, the previously modified archive was not necessary for that reproduction.

The launcher logged exit at 01:58:28, after Apport finished collecting the report; the actual kernel crash time was 01:58:05. Both crashes above reached the same executable file offset within this package version. The stack trace contains only unresolved ??? frames, so it does not identify a function or establish the underlying cause.

Raw core dumps and full application logs are not attached because they can contain private application data. Sanitized crash evidence is included above.

Verified workaround and why deleting the entry did not work

Use an explicit null binding:

[
  { "command": "hotkeyWindow", "key": null },
  { "command": "realtimeVoice", "key": "Ctrl+." }
]

Then fully quit and reopen the app. Preserve any other existing bindings.

Deleting the hotkeyWindow entry was insufficient: the shortcut value reappeared and the app crashed again. Inspection of the installed keymap implementation showed that its schema accepts a nullable key, and clearing all accelerators for a command writes {command: commandId, key: null}. We applied that explicit disable entry, read the file back to verify it, and the user confirmed: “it works now.”

The workaround disables the quick-access shortcut; it does not repair or validate the quick-access window itself. No claim is made that every earlier intermittent crash had this cause.

Scope and maintainer follow-up

The strongest isolated lead is the quick-access/global-shortcut path associated with hotkeyWindow. A modifier parsing issue, shortcut collision, or window lifecycle failure remains a hypothesis, not a confirmed root cause. Investigating those paths in the desktop implementation and symbolizing the native trap would be useful.

The public repository does not contain the affected desktop hotkeyWindow implementation, so this report supplies reproduction and workaround evidence rather than a speculative code patch. Earlier MCP startup failures, preload warnings, and listener warnings were not established as causal.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by checking whether the affected desktop implementation is present in this repository; the issue says the public repository does not contain hotkeyWindow. Review the Linux reproduction steps, SIGTRAP evidence at offset 0xac35211, and the explicit null-binding workaround. Done means identifying the shortcut failure and preventing the app from terminating, or safely rejecting the unsupported accelerator.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.