Author: Ronald Eytchison (Trail of Bits)
Overview
Debug the Buttercup CRS (Cyber Reasoning System) running on Kubernetes. This plugin provides systematic triage workflows, diagnostic commands, and service-specific debugging for all components of the Buttercup fuzzing platform.When to Use
Pod Failures
Pods in the
crs namespace are in CrashLoopBackOff, OOMKilled, or restartingCascade Failures
Multiple services restart simultaneously (cascade failure)
Redis Issues
Redis is unresponsive or showing AOF warnings
Queue Problems
Queues are growing but tasks are not progressing
Resource Pressure
Nodes show DiskPressure, MemoryPressure, or PID pressure
DinD Failures
Build-bot cannot reach the Docker daemon
Scheduler Issues
Scheduler is stuck and not advancing task state
Health Check Failures
Health check probes are failing unexpectedly
Service Architecture
All pods run in namespacecrs. Key services:
Triage Workflow
1
Check Pod Status
Look for restarts, CrashLoopBackOff, OOMKilled:
2
Review Events
See the timeline of what went wrong:
3
Filter Warnings
Focus on critical issues:
4
Investigate Specific Pod
Check why a pod restarted:
Cascade Detection
The most common cascade: Redis goes down → every service getsConnectionError/ConnectionRefusedError → mass restarts.
Look for the same error across multiple --previous logs. If they all say redis.exceptions.ConnectionError, debug Redis, not the individual services.
Historical vs Ongoing Issues
Redis Debugging
Redis is the backbone. When it goes down, everything cascades.- Status Check
- Redis CLI
- Queue Inspection
- Disk Check
Resource Pressure
Health Checks
Pods write timestamps to/tmp/health_check_alive. The liveness probe checks file freshness.
If a pod is restart-looping, the health check file is likely going stale because the main process is blocked (e.g. waiting on Redis, stuck on I/O).
Service-Specific Quick Reference
DinD (Docker-in-Docker)
Check docker daemon crashes, storage driver errors:
Build-bot
Check build queue depth, DinD connectivity, OOM during compilation
Fuzzer-bot
Check corpus disk usage, CPU throttling, crash queue backlog
Patcher
Check LiteLLM connectivity, LLM timeout, patch queue depth
Scheduler
The central brain:
Deployment Config Verification
When behavior doesn’t match expectations, verify Helm values actually took effect:Telemetry (OpenTelemetry / Signoz)
All services export traces and metrics via OpenTelemetry. If Signoz is deployed (global.signoz.deployed: true), use its UI for distributed tracing.
Installation
When NOT to Use
- Deploying or upgrading Buttercup (use Helm and deployment guides)
- Debugging issues outside the
crsKubernetes namespace - Performance tuning that doesn’t involve a failure symptom