Common Error Messages
Error: Failed to send request to sidecar
Error: Failed to send request to sidecar
Symptom: Pipeline fails immediately with sidecar communication error.Cause: The Go sidecar process (
ironbullet-sidecar) is not running or not responding.Solution:- Check if the sidecar process is running:
- Restart IronBullet to auto-launch the sidecar
- Check sidecar logs for port conflicts (default:
:50051) - Verify firewall rules allow localhost gRPC traffic
Error: Proxy authentication failed
Error: Proxy authentication failed
Symptom: HTTP requests fail with 407 status or “proxy error”.Cause: Proxy credentials are incorrect or proxy format is invalid.Solution:
- Verify proxy format in
proxies.txt: - Test proxy manually:
- Check for special characters in password (URL-encode if needed)
- Try a different proxy from your list to isolate the issue
Error: Regex parse error
Error: Regex parse error
Symptom:
ParseRegex block fails with “invalid regex”.Cause: Rust’s regex syntax differs slightly from other languages (no lookahead/lookbehind).Solution:- Test regex at regex101.com with Rust flavor
- Common fixes:
- Replace
(?=...)lookahead with capturing groups - Replace
(?<=...)lookbehind with different pattern - Escape special chars:
.→\.,*→\*
- Replace
- Use raw string in code:
r"pattern"to avoid double-escaping - Simplify pattern:
"token":(.*?)}→"token":"([^"]+)"
Error: JSON pointer not found
Error: JSON pointer not found
Symptom:
ParseJSON returns empty string even though key exists.Cause: JSON path syntax mismatch or nested structure.Solution:- Verify JSON structure with
jq: - Use JSON pointer syntax (slash-separated):
- Dot notation:
user.id - Pointer:
/user/id
- Dot notation:
- Check for array indices:
items[0].name→/items/0/name
- Log the raw response to verify structure:
Error: SSL certificate verify failed
Error: SSL certificate verify failed
Symptom: HTTPS requests fail with TLS/SSL error.Cause: Self-signed cert, expired cert, or strict TLS validation.Solution:
- Temporary fix: Disable SSL verification in HttpRequest block:
- Production fix: Install root CA certificate
- For corporate proxies with SSL interception:
- Import proxy’s CA cert into system trust store
- Or use
tls_client: RustTLS(more permissive)
Warning: Thread pool starvation (CPM = 0)
Warning: Thread pool starvation (CPM = 0)
Symptom: Runner starts but CPM stays at 0, no credentials processed.Cause: All worker threads are blocked or deadlocked.Solution:
- Check for infinite loops in IfElse/Loop blocks
- Verify data pool has credentials:
- Check thread count > 0 in runner settings
- Review logs for panic messages from workers
- Restart with gradual thread start:
Error: Variable not found: <varname>
Error: Variable not found: <varname>
Symptom: Block fails because input variable doesn’t exist.Cause: Variable was never set or typo in variable name.Solution:
- Check variable naming (case-sensitive):
SOURCE≠source- Use Debug mode to inspect
variables_afterin block results
- Ensure variable is set before use:
- Use default values in parsing blocks to avoid errors
- Enable safe mode on non-critical blocks
Error: ChromiumOxide browser launch failed
Error: ChromiumOxide browser launch failed
Symptom:
BrowserOpen block fails with “cannot find chrome executable”.Cause: Chrome/Chromium not installed or not in PATH.Solution:- Install Chrome/Chromium:
- Set
CHROME_PATHenvironment variable: - For headless servers, install dependencies:
- Use
--no-sandboxflag in Docker:
Debugging Techniques
1. Enable Debug Mode
Debug mode captures full execution context:src/pipeline/engine/mod.rs
- Run pipeline in test mode with 1 credential
- Inspect
block_resultsto see variable state after each block - Check
network_logfor HTTP timing and cookies - Review
logfor error messages
2. Isolate Failing Blocks
Bisect the pipeline to find the problematic block:- Disable half the blocks
- Run again — does it still fail?
- If yes, the issue is in the enabled half
- If no, the issue is in the disabled half
- Repeat until you find the exact block
3. Log Variable State
Insert Log blocks to trace variable values:4. Safe Mode for Non-Critical Blocks
Prevent one block’s error from halting the entire pipeline:- Parsing optional response fields
- Bonus data extraction (balance, expiry, etc.)
- Non-essential logging/webhooks
- Authentication tokens (pipeline can’t proceed without them)
- KeyCheck blocks (defeats purpose of validation)
5. Proxy Testing
Isolate proxy issues from pipeline logic:- Check proxy format in
proxies.txt - Verify
proxy_modesetting (None/Sticky/Rotate) - Review sidecar logs for proxy errors
6. Network Log Analysis
Thenetwork_log tracks every HTTP request:
src/pipeline/engine/mod.rs
timing_ms > 5000: Slow proxy or rate limitingstatus_code = 403/429: IP banned or rate limitedcookies_setempty when expected: Check response headersresponse_size = 0: Server returned empty body
7. Variable Store Inspection
src/pipeline/variable.rs
variables_after contains the full variable map. Look for:
- Missing expected variables
- Variables with wrong values (empty, truncated, etc.)
- Variable name typos (
tokenvsToken)
Performance Debugging
High Latency
Symptom: CPM < 60, each check takes > 1 second. Diagnosis:- Slow proxies (avg > 500ms)
- Complex regex (> 100ms for large inputs)
- Unoptimized CSS selectors (too broad)
- Network timeouts (increase
timeout_ms)
Low CPM
Symptom: CPM plateaus far below expected. Diagnosis:- Check
active_threads— should match configured thread count - If < configured, workers are crashing:
- If = configured but CPM low:
- I/O bound: increase thread count
- Rate limited: reduce thread count, add proxies
- CPU bound: optimize parse blocks
Memory Leaks
Symptom: RAM usage grows over time, eventually OOM. Diagnosis:- Check result feed size (default: 100 entries)
- Disable response body capture in
BlockResult: - Use
safe_modeto skip error logging of large responses - Clear browser instances after each credential:
Build Errors
Error: linker `cc` not found
Error: linker `cc` not found
Cause: C compiler not installed (required for some dependencies).Solution:
Error: failed to fetch crate from registry
Error: failed to fetch crate from registry
Cause: Network issue or crates.io outage.Solution:
- Check internet connection
- Retry build (transient network error)
- Use mirror registry:
Error: cannot find type `Pipeline` in this scope
Error: cannot find type `Pipeline` in this scope
Cause: Outdated or incompatible crate versions.Solution:
Runtime Panics
Panic: Index out of bounds
Stack trace:Panic: Unwrap on None
Stack trace:unwrap_or_default() or validate before use:
Getting Help
Gather diagnostics
- Pipeline config file (
.ibor YAML) - Error message + stack trace
- IronBullet version:
ironbullet --version - OS + architecture:
uname -a - Minimal reproduction (smallest pipeline that triggers the bug)
Search existing issues
Check GitHub Issues for similar reports.
Join the community
- Discord: discord.gg/openbullet
- Forum: openbullet.com/forum
Advanced Debugging Tools
Tokio Console
Profile async task performance:Cargo.toml:
- Task spawn/completion times
- Async lock contention
- Tokio runtime metrics
Flamegraph Profiling
Find CPU hotspots:flamegraph.svg to see which functions consume the most CPU time.
Memory Profiling
Detect memory leaks with Valgrind:heaptrack for detailed allocation traces: