Skip to content

[Bug]: Discord gateway crash exits OpenClaw on Windows with "Attempted to reconnect zombie connection after disconnecting first" #64011

@talesrt

Description

@talesrt

Bug type

Regression (worked before, now fails)

Beta release blocker

No

Summary

Bug type

Crash

Beta release blocker

No

Summary

After upgrading from OpenClaw 2026.2.6 to 2026.4.9 on Windows, the gateway process starts, reaches ready, and then later exits with an uncaught exception in the Discord gateway dependency @buape/carbon. Disabling Discord stops the crash.

Steps to reproduce

  1. Run OpenClaw 2026.4.9 on Windows with the Discord channel enabled.
  2. Start or restart the gateway service (Scheduled Task in this setup).
  3. Observe the gateway reaches ready.
  4. After some time, observe the process exits unexpectedly.
  5. Run openclaw gateway status --deep and inspect the latest log file.
  6. Observe the last log line contains an uncaught exception from @buape/carbon:
    Attempted to reconnect zombie connection after disconnecting first.
  7. Set channels.discord.enabled to false, restart the gateway, and observe the crash no longer reproduces.

Steps to reproduce

Expected behavior

The gateway should remain running after startup and Discord reconnect/heartbeat handling should not crash the process. This setup worked before the update on 2026.2.6.

Actual behavior

The gateway starts normally, including:
text
[gateway] ready (7 plugins, 27.3s)
but later exits. openclaw gateway status --deep then reports:
text
Runtime: stopped (state Ready, last run 1, Task Last Run Result=1; treating as not running.)
RPC probe: failed
Service is loaded but not running (likely exited immediately).
The last log line is:
text
[openclaw] Uncaught exception: Error: Attempted to reconnect zombie connection after disconnecting first (this shouldn't be possible)
at Object.reconnectCallback (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:217:15)
at Timeout.sendHeartbeat [as _onTimeout] (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/utils/heartbeat.ts:31:12)
at listOnTimeout (node:internal/timers:605:17)
at processTimers (node:internal/timers:541:7)

OpenClaw version

2026.4.9 (0512059)

Operating system

Windows (exact version not captured)

Install method

npm global

Model

NOT_ENOUGH_INFO

Provider / routing chain

openclaw -> Discord channel -> @buape/carbon gateway plugin

Additional provider/model setup details

The effective chat model was changed during debugging, but the terminating stack trace consistently pointed at the Discord gateway reconnect path, not the model runtime.

Logs, screenshots, and evidence

Gateway reached ready:
text
19:55:54-03:00 [gateway] ready (7 plugins, 27.3s)
19:55:55-03:00 [gateway] starting channels and sidecars...
19:55:56-03:00 [hooks] loaded 4 internal hook handlers
19:56:02-03:00 [bonjour] watchdog detected non-announced service; attempting re-advertise ...
Deep status after crash:
text
Runtime: stopped (state Ready, last run 1, last run time 4/9/2026 9:50:24 PM, Task Last Run Result=1; treating as not running.)
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006):

Service is loaded but not running (likely exited immediately).
Last log line:
text
[openclaw] Uncaught exception: Error: Attempted to reconnect zombie connection after disconnecting first (this shouldn't be possible)
at Object.reconnectCallback (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:217:15)
at Timeout.sendHeartbeat [as _onTimeout] (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/utils/heartbeat.ts:31:12)
at listOnTimeout (node:internal/timers:605:17)
at processTimers (node:internal/timers:541:7)
Workaround observed:
text
openclaw config set channels.discord.enabled false --strict-json
openclaw gateway restart
After disabling Discord, the user confirmed the crash trigger was Discord.

Impact and severity

Affected: Windows install with Discord channel enabled
Severity: High, because the gateway process exits
Frequency: Intermittent but repeated after restart/reboot
Consequence: Gateway stops responding and must be restarted; disabling Discord is the current workaround

Additional information

Last known good: 2026.2.6
First known bad: 2026.4.9 after update

A reboot temporarily improved behavior once, but the crash returned later.

There was also a stale config warning unrelated to the crash:

plugins.entries.minimax-portal-auth: plugin not found: minimax-portal-auth


That warning did not explain the terminating stack trace.

File it here:
https://github.com/openclaw/openclaw/issues

If you want, I can also trim that down into a shorter version before you post it.

Expected behavior

Expected behavior

The gateway should remain running after startup and Discord reconnect/heartbeat handling should not crash the process. This setup worked before the update on 2026.2.6.

Actual behavior

Expected behavior

The gateway should remain running after startup and Discord reconnect/heartbeat handling should not crash the process. This setup worked before the update on 2026.2.6.

Actual behavior

The gateway starts normally, including:
text
[gateway] ready (7 plugins, 27.3s)
but later exits. openclaw gateway status --deep then reports:
text
Runtime: stopped (state Ready, last run 1, Task Last Run Result=1; treating as not running.)
RPC probe: failed
Service is loaded but not running (likely exited immediately).
The last log line is:
text
[openclaw] Uncaught exception: Error: Attempted to reconnect zombie connection after disconnecting first (this shouldn't be possible)
at Object.reconnectCallback (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:217:15)
at Timeout.sendHeartbeat [as _onTimeout] (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/utils/heartbeat.ts:31:12)
at listOnTimeout (node:internal/timers:605:17)
at processTimers (node:internal/timers:541:7)

OpenClaw version

2026.4.9 (0512059)

Operating system

Windows (exact version not captured)

Install method

npm global

Model

NOT_ENOUGH_INFO

Provider / routing chain

openclaw -> Discord channel -> @buape/carbon gateway plugin

Additional provider/model setup details

The effective chat model was changed during debugging, but the terminating stack trace consistently pointed at the Discord gateway reconnect path, not the model runtime.

Logs, screenshots, and evidence

Gateway reached ready:
text
19:55:54-03:00 [gateway] ready (7 plugins, 27.3s)
19:55:55-03:00 [gateway] starting channels and sidecars...
19:55:56-03:00 [hooks] loaded 4 internal hook handlers
19:56:02-03:00 [bonjour] watchdog detected non-announced service; attempting re-advertise ...
Deep status after crash:
text
Runtime: stopped (state Ready, last run 1, last run time 4/9/2026 9:50:24 PM, Task Last Run Result=1; treating as not running.)
RPC probe: failed
RPC target: ws://127.0.0.1:18789
gateway closed (1006):

Service is loaded but not running (likely exited immediately).
Last log line:
text
[openclaw] Uncaught exception: Error: Attempted to reconnect zombie connection after disconnecting first (this shouldn't be possible)
at Object.reconnectCallback (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/GatewayPlugin.ts:217:15)
at Timeout.sendHeartbeat [as _onTimeout] (file:///C:/Users/Molton/AppData/Roaming/npm/node_modules/openclaw/node_modules/@buape/carbon/src/plugins/gateway/utils/heartbeat.ts:31:12)
at listOnTimeout (node:internal/timers:605:17)
at processTimers (node:internal/timers:541:7)
Workaround observed:
text
openclaw config set channels.discord.enabled false --strict-json
openclaw gateway restart
After disabling Discord, the user confirmed the crash trigger was Discord.

Impact and severity

Affected: Windows install with Discord channel enabled
Severity: High, because the gateway process exits
Frequency: Intermittent but repeated after restart/reboot
Consequence: Gateway stops responding and must be restarted; disabling Discord is the current workaround

Additional information

Last known good: 2026.2.6
First known bad: 2026.4.9 after update

A reboot temporarily improved behavior once, but the crash returned later.

There was also a stale config warning unrelated to the crash:

plugins.entries.minimax-portal-auth: plugin not found: minimax-portal-auth


That warning did not explain the terminating stack trace.


### OpenClaw version

2026.4.9

### Operating system

win10

### Install method

npm global

### Model

minimax2.7

### Provider / routing chain

-

### Additional provider/model setup details

_No response_

### Logs, screenshots, and evidence

```shell

Impact and severity

No response

Additional information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingregressionBehavior that previously worked and now fails

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions