Skip to main content

Common issues

Simulator binary not found

Symptom: Error message indicating the simulator binary cannot be located.Causes:
  • Simulator binary not built
  • Binary not in expected location
  • Incorrect path configuration
Solution:
1

Build the simulator

2

Verify binary exists

3

Set environment variable

4

Or use flag override

Invalid JSON from simulator

Symptom: Malformed JSON response from the Rust simulator.Causes:
  • Malformed simulation request
  • XDR encoding issues
  • Simulator crash or panic
Solution:
  1. Check XDR encoding:
  2. Enable debug mode:
  3. Check simulator logs: Look for panic messages or stack traces in stderr.
  4. Validate request format: Ensure the request matches the expected schema:

Ledger entry decode error

Symptom: Error decoding ledger state snapshot.Causes:
  • Incorrect ledger state snapshot
  • Wrong ledger sequence number
  • Corrupted ledger data
Solution:
  1. Verify transaction block number:
  2. Check ledger sequence: Ensure you’re fetching state from the correct ledger:
  3. Validate XDR format: Test XDR decoding separately:

Horizon API timeout

Symptom: Network timeout when fetching transaction data.Causes:
  • Network latency or connectivity issues
  • Horizon endpoint down or slow
  • Rate limiting
Solution:
  1. Check Horizon status:
  2. Try different network:
  3. Check network connectivity:
  4. Verify rate limits: Check response headers for rate limit information:
  5. Use custom timeout: Increase request timeout if needed (future feature).

Debugging workflow issues

Transaction not found

Symptom: Transaction hash not found in Horizon API.Causes:
  • Invalid transaction hash
  • Transaction on different network
  • Very recent transaction not yet indexed
Solution:
  1. Verify transaction hash: Check the hash is 64 hexadecimal characters.
  2. Check correct network:
  3. Wait for indexing: For very recent transactions, wait 10-30 seconds and retry.
  4. Query directly:

Simulation produces different result

Symptom: Local simulation produces different output than the actual on-chain transaction.Causes:
  • State snapshot timing mismatch
  • Protocol version difference
  • Ledger state inconsistency
Solution:
  1. Verify exact ledger state: Ensure ledger entries are from the same sequence as the transaction.
  2. Check protocol version:
  3. Compare transaction metadata:
  4. Enable verbose logging:

Interactive trace issues

Symptom: Terminal UI crashes, displays incorrectly, or keyboard shortcuts don’t work.Causes:
  • Terminal compatibility issues
  • Insufficient terminal size
  • Color support problems
Solution:
  1. Check terminal size:
  2. Test terminal compatibility:
  3. Disable colors if needed:
  4. Use non-interactive mode:

Performance issues

Slow simulation execution

Symptom: Simulation execution time is unacceptably slow.Causes:
  • Large contract state
  • Complex transaction with many operations
  • Network latency fetching data
  • Inefficient contract code
Solution:
  1. Profile the execution:
  2. Check state fetch time: Enable timing metrics:
  3. Optimize network requests:
    • Use closer Horizon endpoint
    • Cache ledger entries locally
    • Use JSON-RPC for batch queries
  4. Analyze flamegraph: Generate and review interactive flamegraph:

High memory usage

Symptom: Erst process uses too much memory.Causes:
  • Large ledger state
  • Memory leak in simulator
  • Many concurrent operations
Solution:
  1. Check memory usage:
  2. Limit concurrent operations: Reduce parallelism if using daemon mode.
  3. Check for leaks:
  4. Report memory leaks: If persistent, report with memory profile:

HSM and signing issues

PKCS#11 module not found

Symptom: Cannot load HSM PKCS#11 library.Solution:

HSM not detected

Symptom: HSM device not detected.Solution:

PIN incorrect

Symptom: HSM PIN authentication failed.Solution:

Key not found in HSM

Symptom: Specified key not found on HSM.Solution:

Metrics and observability issues

Metrics not appearing

Symptom: /metrics endpoint returns empty or no metrics.Solution:
  1. Verify daemon is running:
  2. Check metrics endpoint:
  3. Trigger some activity: Metrics appear only after first use:
  4. Check Prometheus scrape config: Verify target is configured correctly in prometheus.yml.

Traces not appearing in Jaeger

Symptom: No traces appearing in Jaeger UI.Solution:
  1. Verify tracing is enabled:
  2. Check OTLP endpoint:
  3. Verify Jaeger is running:
  4. Test with curl: Send test trace to verify endpoint:
  5. Check for errors: Enable debug logging:

Validation errors

Schema validation failures

Symptom: Request validation errors before simulation.Causes:
  • Missing required fields
  • Invalid Base64 encoding
  • Malformed XDR data
Solution:
  1. Check required fields:
  2. Validate Base64 encoding:
  3. Test XDR decoding:
  4. Enable strict validation: Use validator in strict mode for detailed errors:

Getting help

If you encounter an issue not covered in this guide:
  1. Check GitHub Issues: Search for similar problems at https://github.com/dotandev/hintents/issues
  2. Enable debug mode: Run with --debug flag to get detailed logs
  3. Collect diagnostics: Include version info, error messages, and reproduction steps
  4. Report the issue: Create a new GitHub issue with full details

Diagnostic information

When reporting issues, include:
Never share private keys, HSM PINs, or sensitive credentials when reporting issues. Redact any sensitive information from logs and diagnostics.