Skip to content

[Bug]: 0.0.44 Linux/Wayland renderer disappears, leaving a transparent window while the backend survives #14596

Description

@selmant

Before submitting

Area

apps/desktop

What happened

T3 Code intermittently loses all visible window contents during normal use. In the observed failure on stable 0.0.44, the interior became completely transparent, showing the desktop wallpaper through it, while the compositor's window frame remained visible. There was no visible error message.

During inspection, no --type=renderer process existed anywhere in the app's descendant process tree. The desktop main process, GPU process, network utility process, bundled backend, and a Claude agent process remained alive. Hyprland still reported the main window as mapped and not hidden.

This is a fresh report following the closing comment on #1686, which requested current-build diagnostics after #5148 and #5147. A V8 heap-OOM cause is not established here; this may be a different renderer failure with a similar symptom.

Steps to reproduce

  1. Launch the packaged desktop app under Hyprland/native Wayland.
  2. Use it normally for an extended session.
  3. Intermittently, the main window contents disappear and become transparent.

The observed app instance had been running for approximately 5 hours 18 minutes when renderer-originated IPC stopped. The exact preceding interaction is unknown, and there is no deterministic reproduction yet.

Expected behavior

The UI remains usable, or renderer failure is recovered with a visible diagnostic.

Actual behavior and impact

The window remains mapped but has no visible UI and no renderer process. The backend and agent remain alive, while the desktop UI cannot be used.

Environment

  • T3 Code stable 0.0.44; package t3code-bin 0.0.44-1
  • Arch Linux / Omarchy, x86_64
  • Kernel 7.2.3-arch1-3
  • Hyprland 0.56.2-2
  • Native Wayland; main process launched with --ozone-platform=wayland
  • NVIDIA GeForce RTX 4070; driver 610.57.04
  • System RAM reported as 31 GiB; about 14 GiB available during investigation

Sanitized diagnostic excerpts

These are selected fields from actual local diagnostics. Personal paths, hostnames, process/session/trace IDs, window addresses, absolute timestamps, and conversation contents are omitted. Raw profile/provider logs and the screenshot are not attached.

Hyprland client fields:

{"mapped":true,"hidden":false,"class":"com.t3tools.T3Code","xwayland":false,"fullscreen":0}

App scope state and cgroup memory events:

ActiveState=active
SubState=running
Result=success
MemoryPeak=10989887488

memory.events:
low 0
high 0
max 0
oom 0
oom_kill 0
oom_group_kill 0
sock_throttled 0

The roughly 10.24 GiB scope peak includes all descendants, including backend/agent/tool processes. It is not a renderer measurement and does not prove renderer memory exhaustion. Zero cgroup OOM counters do not rule out V8's own heap limit.

Last renderer-originated IPC spans, followed by main-process window-bounds spans, from desktop.trace.ndjson:

{"type":"effect-span","name":"desktop.ipc.window.getLocalEnvironmentBootstraps","durationMs":0.080854,"exit":{"_tag":"Success"}}
{"type":"effect-span","name":"desktop.ipc.window.getLocalEnvironmentBootstraps","durationMs":0.043834,"exit":{"_tag":"Success"}}
{"type":"effect-span","name":"desktop.settings.setMainWindowBounds","durationMs":0.360506,"exit":{"_tag":"Success"}}
{"type":"effect-span","name":"desktop.settings.setMainWindowBounds","durationMs":0.05262,"exit":{"_tag":"Success"}}
{"type":"effect-span","name":"desktop.settings.setMainWindowBounds","durationMs":0.049023,"exit":{"_tag":"Success"}}

Renderer IPC polling ceased. The main-process bounds updates above continued for roughly another 21 seconds; backend trace activity continued afterward.

Other checks:

t3code main stdout -> /dev/null
t3code main stderr -> /dev/null
coredumpctl: no t3code entry
Crashpad: no dump; only client_id file present
PRAGMA quick_check: ok

No system OOM-killer event or kernel GPU fault/reset was found around the incident. At inspection time, GPU memory usage was about 2.5 GiB of 12 GiB.

Diagnosis limits / recovery

The evidence establishes an absent renderer with surviving main/backend processes. It does not identify the renderer exit reason, signal, or a specific triggering action. The launch discarded console errors, and no matching dump or persisted renderer-exit diagnostic was available.

The installed code contains a render-process-gone recovery handler for crashed, oom, and abnormal-exit, with a limit of three attempts per 60 seconds. The window nevertheless remained without a renderer during inspection; the available logs do not show why recovery did not restore it.

Reload/restart was suggested, but its outcome has not been verified. No settings, caches, or conversation data were changed during diagnosis.


Prepared by GPT-6 via Codex.

Activity

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

    bugSomething is broken or behaving incorrectly.via-triageFiled through npx t3 triage

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions