openclaw - 💡(How to fix) Fix [Bug]: `openclaw status --json` infinite statx loop — 100% CPU, never exits (2026.5.18 & 5.22)

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…

openclaw status --json enters an infinite loop scanning dist/extensions/ via statx() system calls, consuming 100% of one CPU core and never returning. This affects both 2026.5.18 and 2026.5.22 on Linux.

The gateway process itself is fine on 2026.5.18 (0-20% CPU), but on 2026.5.22 the gateway also hits the same statx loop.

Root Cause

  • #70533 — Plugin discovery loads all dist/extensions/ manifests at boot
  • #75591 — Each plugin extension manifest read 100+ times per request
  • #86044 — CLI hangs on Windows (different root cause: auth-state pre-warm)
  • #73291 — openclaw status text mode extremely slow due to cache: false

Fix Action

Workaround

For health checks, avoid openclaw status --json entirely. Use direct HTTP probe instead:

# Instead of: openclaw status --json
curl -s http://localhost:15427/health

Code Example

# On 2026.5.18 or 5.22:
openclaw status --json
# → hangs forever, 100% CPU

---

# Find the stuck process
ps aux | grep openclaw
# PID XXXXX shows 100% CPU

# strace reveals the infinite loop
timeout 2 strace -p <PID> -e trace=statx -c
# statx    ~29,000 calls in 2 seconds

# Actual scan path
strace -p <PID> -e trace=statx 2>&1 | head -50
# Repeatedly scanning:
#   /usr/lib/node_modules/openclaw/dist/extensions/  (95 stock extension dirs)
# Each directory checks package.json, openclaw.plugin.json, index.js etc.
# Each file checked with 3 different statx() flags
# → ~26,000 statx calls/second

---

# Instead of: openclaw status --json
curl -s http://localhost:15427/health
RAW_BUFFERClick to expand / collapse

Bug type

Regression (worked before, now fails)

Summary

openclaw status --json enters an infinite loop scanning dist/extensions/ via statx() system calls, consuming 100% of one CPU core and never returning. This affects both 2026.5.18 and 2026.5.22 on Linux.

The gateway process itself is fine on 2026.5.18 (0-20% CPU), but on 2026.5.22 the gateway also hits the same statx loop.

Environment

  • OS: Linux 5.10.134-19.2.al8.x86_64 (Alibaba Cloud Linux)
  • Node: v24.14.0
  • OpenClaw versions tested: 2026.5.18 (50a2481), 2026.5.22 (a374c3a)

Steps to reproduce

# On 2026.5.18 or 5.22:
openclaw status --json
# → hangs forever, 100% CPU

Diagnosis

# Find the stuck process
ps aux | grep openclaw
# PID XXXXX shows 100% CPU

# strace reveals the infinite loop
timeout 2 strace -p <PID> -e trace=statx -c
# statx    ~29,000 calls in 2 seconds

# Actual scan path
strace -p <PID> -e trace=statx 2>&1 | head -50
# Repeatedly scanning:
#   /usr/lib/node_modules/openclaw/dist/extensions/  (95 stock extension dirs)
# Each directory checks package.json, openclaw.plugin.json, index.js etc.
# Each file checked with 3 different statx() flags
# → ~26,000 statx calls/second

Affected commands

CommandAffected?Notes
openclaw status --json✅ YesHangs forever, 100% CPU (both 5.18 & 5.22)
openclaw gateway run (5.22)✅ YesGateway itself enters statx loop
openclaw gateway run (5.18)❌ NoGateway runs fine at 0-20% CPU
openclaw plugins list❌ NoCompletes normally

Workaround

For health checks, avoid openclaw status --json entirely. Use direct HTTP probe instead:

# Instead of: openclaw status --json
curl -s http://localhost:15427/health

Related issues

  • #70533 — Plugin discovery loads all dist/extensions/ manifests at boot
  • #75591 — Each plugin extension manifest read 100+ times per request
  • #86044 — CLI hangs on Windows (different root cause: auth-state pre-warm)
  • #73291 — openclaw status text mode extremely slow due to cache: false

Suggested fix

  1. Apply tools.allow filter at discovery time before reading/validating manifests (as #70533 suggests)
  2. Add a cache/snapshot for status --json so it doesn't re-scan all 95 extensions every invocation
  3. Add a timeout/max-iterations guard to the plugin scanner to prevent infinite loops

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - 💡(How to fix) Fix [Bug]: `openclaw status --json` infinite statx loop — 100% CPU, never exits (2026.5.18 & 5.22)