# Troubleshooting ## Validation failures before startup If `shmpipeline validate` fails, the most common causes are: - duplicate shared-memory names - duplicate kernel names - kernels referencing undefined streams - invalid storage combinations between streams and kernel kinds - multiple kernels producing the same output stream Use `shmpipeline describe pipeline.yaml` to confirm the intended graph shape. ## Worker stays in `waiting-input` This means the worker process is alive but has not yet received its first trigger input. Typical causes: - no external producer is writing the source stream - the wrong stream is being driven - a synthetic input writer was not started for a source stream ## Worker becomes `idle` This means the worker has processed frames before but has not made recent output progress. Typical causes: - upstream input has stalled - the configured timeout is too aggressive for the workload - a long-running stage is introducing backpressure ## GPU viewer or CPU reader cannot inspect a stream If a GPU stream must be readable from CPU code, create it with `cpu_mirror: true`. ## GPU runtime requirements GPU support depends on a compatible CUDA and PyTorch environment. When CUDA is unavailable, GPU-specific tests are skipped and GPU examples will not run. ## Repeated lifecycle testing For release testing or stress testing, repeatedly exercise: - `build()` - `start()` - `stop()` - `shutdown()` This catches stale-handle, teardown, and resource ownership issues earlier than single-run smoke tests.