honeycombio / loadgen

A flexible command-line load generator to create traces in OTel or Honeycomb formats
Apache License 2.0
3 stars 2 forks source link

panic: runtime error: index out of range [-1] #5

Closed tdarwin closed 1 year ago

tdarwin commented 1 year ago

Running loadgen yesterday against a test Refinery instance, we ran into a panic error unexpectedly.

❯ ./loadgen --host=salty.raas.hny.wtf --sender=otel --tps=5000 --depth=4 --nspans=15 --extra=15 --tracetime=1500ms --runtime=500s
panic: runtime error: index out of range [-1]

goroutine 1958 [running]:
math/rand.(*rngSource).Uint64(...)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rng.go:249
math/rand.(*rngSource).Int63(0x0?)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rng.go:234 +0x8c
math/rand.(*Rand).Int63(...)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rand.go:95
math/rand.(*Rand).Int31(...)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rand.go:109
math/rand.(*Rand).Int31n(0x1?, 0x3036f18?)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rand.go:141 +0x90
math/rand.(*Rand).Intn(0x0?, 0x0?)
    /Users/davintaddeo/.asdf/installs/golang/1.20.3/go/src/math/rand/rand.go:182 +0x30
main.Rng.Int(...)
    /Users/davintaddeo/Documents/honeycomb/loadgen/fielder.go:75
main.Rng.HexString({0x140004a6ab0?}, 0x10)
    /Users/davintaddeo/Documents/honeycomb/loadgen/fielder.go:101 +0x64
main.Rng.getValueGenerators.func15()
    /Users/davintaddeo/Documents/honeycomb/loadgen/fielder.go:162 +0x24
main.(*Fielder).AddFields(0x140004a55c0?, {0x1050d4ba0, 0x14001e64000}, 0x104e56162?)
    /Users/davintaddeo/Documents/honeycomb/loadgen/fielder.go:385 +0x1cc
main.(*SenderOTel).CreateSpan(0x247af7e?, {0x1050d0d20?, 0x14004b861e0?}, {0x104e56162?, 0x3?}, 0x7c9a35d?)
    /Users/davintaddeo/Documents/honeycomb/loadgen/sender_otel_honey.go:94 +0x6c
main.(*TraceGenerator).generate_spans(0x140004b4af0, {0x1050d0d20, 0x14004b861e0}, 0x3, 0xe, 0x557463da)
    /Users/davintaddeo/Documents/honeycomb/loadgen/generator.go:96 +0x23c
main.(*TraceGenerator).generate_root(0x140004b4af0, 0x14004883f30?, 0x4, 0xf, 0x59682f00)
    /Users/davintaddeo/Documents/honeycomb/loadgen/generator.go:110 +0x108
main.(*TraceGenerator).generator(0x140004b4af0, 0x1400045f9b0, 0x0?)
    /Users/davintaddeo/Documents/honeycomb/loadgen/generator.go:138 +0x1b8
created by main.(*TraceGenerator).Generate
    /Users/davintaddeo/Documents/honeycomb/loadgen/generator.go:191 +0x4a0

Versions

Steps to reproduce

I saw this with the following command, but it was also seen with a --tps of 500.

./loadgen --host=salty.raas.hny.wtf --sender=otel --tps=5000 --depth=4 --nspans=15 --extra=15 --tracetime=1500ms --runtime=500s

Additional context

All from a fresh build of the tool using the main branch of the repo

kentquirk commented 1 year ago

A set of misplaced parentheses caused this.