Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Panic with NoLookup duration histograms... #30

Closed
sean- opened this issue Dec 13, 2023 · 6 comments
Closed

Panic with NoLookup duration histograms... #30

sean- opened this issue Dec 13, 2023 · 6 comments

Comments

@sean-
Copy link
Contributor

sean- commented Dec 13, 2023

Howdy. This is a pretty simple to reproduce issue. I don't have time to diagnose the cause, but wanted to pass this along for awareness (I got the answer I was looking for 😉 ):

$ go test -test.bench=. -benchmem
goos: darwin
goarch: arm64
pkg: github.com/sean-/metrics-bench
Benchmark_CircLLHistDuration-10    	 7236760	       165.1 ns/op	       0 B/op	       0 allocs/op
Benchmark_PromDuration-10          	 4471849	       278.3 ns/op	       0 B/op	       0 allocs/op
PASS
ok  	github.com/sean-/metrics-bench	3.060s

repro_test.go:

package main

import (
	"math/rand"
	"testing"
	"time"

	"github.com/jaswdr/faker"
	"github.com/openhistogram/circonusllhist"
	"github.com/prometheus/client_golang/prometheus"
)

const (
	minTime  = 0 * time.Nanosecond
	maxTime  = 10 * time.Second
	randSeed = 42
)

func randDuration(f *faker.Faker, min, max time.Duration) time.Duration {
	i := f.IntBetween(int(min), int(max))
	return time.Duration(i) * time.Nanosecond
}

func Benchmark_CircLLHistDuration(b *testing.B) {
	h := circonusllhist.New()
	f := faker.NewWithSeed(rand.NewSource(randSeed))

	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			h.RecordDuration(randDuration(&f, minTime, maxTime))
		}
	})
}

func Benchmark_CircLLHistDurationNoLookup(b *testing.B) {
	h := circonusllhist.NewNoLocks()
	f := faker.NewWithSeed(rand.NewSource(randSeed))

	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			d := randDuration(&f, minTime, maxTime)
			h.RecordDuration(d)
		}
	})
}

func Benchmark_PromDuration(b *testing.B) {
	h := prometheus.NewHistogram(prometheus.HistogramOpts{
		Name: "bench_prom_dur_hist",
	})
	f := faker.NewWithSeed(rand.NewSource(randSeed))

	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			h.Observe(randDuration(&f, minTime, maxTime).Seconds())
		}
	})
}
@sean-
Copy link
Contributor Author

sean- commented Dec 13, 2023

And the panic message:

➜ go test -test.bench=. -benchmem
goos: darwin
goarch: arm64
pkg: github.com/sean-/metrics-bench
Benchmark_CircLLHistDuration-10            	 7324110	       166.7 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistDurationNoLookup-10    	panic: runtime error: index out of range [200] with length 200

goroutine 138 [running]:
github.com/openhistogram/circonusllhist.(*Histogram).updateFast(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:655
github.com/openhistogram/circonusllhist.(*Histogram).insertBin(0x140000ac000, 0x2540be401?, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:626 +0x2c4
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScales(0x104a34d30?, 0x140000940c0?, 0x0?, 0x1049f9400?)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:707 +0x98
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScale(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:535
github.com/openhistogram/circonusllhist.(*Histogram).RecordDuration(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:547
github.com/sean-/metrics-bench.Benchmark_CircLLHistDurationNoLookup.func1(0x1400021a000)
	/Users/seanc/tmp/t/m/bench_test.go:42 +0x7c
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 130
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:808 +0x104
panic: runtime error: slice bounds out of range [:202] with capacity 200

goroutine 133 [running]:
github.com/openhistogram/circonusllhist.(*Histogram).insertNewBinAt(0x140000ac000, 0x2, 0x140000b4f08, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:644 +0x304
github.com/openhistogram/circonusllhist.(*Histogram).insertBin(0x140000ac000, 0x2540be401?, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:624 +0xa4
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScales(0x104a34d30?, 0x140000940c0?, 0x0?, 0x1049f9400?)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:707 +0x98
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScale(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:535
github.com/openhistogram/circonusllhist.(*Histogram).RecordDuration(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:547
github.com/sean-/metrics-bench.Benchmark_CircLLHistDurationNoLookup.func1(0x14000500000)
	/Users/seanc/tmp/t/m/bench_test.go:42 +0x7c
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 130
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:808 +0x104
panic: runtime error: slice bounds out of range [:202] with capacity 200

goroutine 131 [running]:
github.com/openhistogram/circonusllhist.(*Histogram).insertNewBinAt(0x140000ac000, 0x11, 0x14000287f08, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:644 +0x304
github.com/openhistogram/circonusllhist.(*Histogram).insertBin(0x140000ac000, 0x2540be401?, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:624 +0xa4
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScales(0x104a34d30?, 0x140000940c0?, 0x0?, 0x1049f9400?)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:707 +0x98
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScale(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:535
github.com/openhistogram/circonusllhist.(*Histogram).RecordDuration(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:547
github.com/sean-/metrics-bench.Benchmark_CircLLHistDurationNoLookup.func1(0x14000400000)
	/Users/seanc/tmp/t/m/bench_test.go:42 +0x7c
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 130
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:808 +0x104
panic: runtime error: slice bounds out of range [:202] with capacity 200

goroutine 134 [running]:
github.com/openhistogram/circonusllhist.(*Histogram).insertNewBinAt(0x140000ac000, 0x11, 0x14000051708, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:644 +0x304
github.com/openhistogram/circonusllhist.(*Histogram).insertBin(0x140000ac000, 0x2540be401?, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:624 +0xa4
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScales(0x104a34d30?, 0x140000940c0?, 0x0?, 0x1049f9400?)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:707 +0x98
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScale(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:535
github.com/openhistogram/circonusllhist.(*Histogram).RecordDuration(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:547
github.com/sean-/metrics-bench.Benchmark_CircLLHistDurationNoLookup.func1(0x14000402000)
	/Users/seanc/tmp/t/m/bench_test.go:42 +0x7c
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 130
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:808 +0x104
panic: runtime error: slice bounds out of range [:201] with capacity 200

goroutine 139 [running]:
github.com/openhistogram/circonusllhist.(*Histogram).insertNewBinAt(0x140000ac000, 0xa, 0x14000055f08, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:644 +0x304
github.com/openhistogram/circonusllhist.(*Histogram).insertBin(0x140000ac000, 0x2540be401?, 0x1)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:624 +0xa4
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScales(0x104a34d30?, 0x140000940c0?, 0x0?, 0x1049f9400?)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:707 +0x98
github.com/openhistogram/circonusllhist.(*Histogram).RecordIntScale(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:535
github.com/openhistogram/circonusllhist.(*Histogram).RecordDuration(...)
	/Users/seanc/go/pkg/mod/github.com/openhistogram/circonusllhist@v0.3.0/circonusllhist.go:547
github.com/sean-/metrics-bench.Benchmark_CircLLHistDurationNoLookup.func1(0x1400028e000)
	/Users/seanc/tmp/t/m/bench_test.go:42 +0x7c
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 130
	/opt/homebrew/Cellar/go/1.21.4/libexec/src/testing/benchmark.go:808 +0x104
exit status 2
FAIL	github.com/sean-/metrics-bench	1.667s

@sean-
Copy link
Contributor Author

sean- commented Dec 13, 2023

Eh, posted things here in case anyone's interested, too: https://github.com/sean-/bench-go-histograms

@maier
Copy link
Collaborator

maier commented Dec 14, 2023

will take a look, thanks for opening the issue

@maier
Copy link
Collaborator

maier commented Dec 14, 2023

Released v0.4.0 which includes some additional optimizations and lint fixes (not sure why this wasn't released earlier).

So, with v0.4.0, I see:

go test -test.bench=. -benchmem
goos: darwin
goarch: amd64
pkg: github.com/sean-/bench-go-histograms
cpu: Intel(R) Xeon(R) W-3245 CPU @ 3.20GHz
Benchmark_CircLLHistDuration-32     	 4653346	       234.0 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistApproxSum/ApproxSum-32         	1000000000	         0.0000005 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistBinCount/BinCount-32           	1000000000	         0.0000003 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistBuckets/Count-32               	1000000000	         0.0000003 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistMerge/Merge-32                 	 5091453	       234.2 ns/op	       0 B/op	       0 allocs/op
Benchmark_CircLLHistQuantile/ValueAtQuantile-32    	1000000000	         0.0000008 ns/op	       0 B/op	       0 allocs/op
Benchmark_PromDuration-32                          	panic: runtime error: index out of range [-1]

goroutine 716 [running]:
math/rand.(*rngSource).Uint64(...)
	/usr/local/go/src/math/rand/rng.go:249
math/rand.(*rngSource).Int63(0x136d8a0?)
	/usr/local/go/src/math/rand/rng.go:234 +0x85
math/rand.(*Rand).Int63(...)
	/usr/local/go/src/math/rand/rand.go:96
math/rand.(*Rand).Int63n(0xc000206000, 0x2540be401)
	/usr/local/go/src/math/rand/rand.go:128 +0x62
math/rand.(*Rand).Intn(0x40107cbbe299bdac?, 0xc000126270?)
	/usr/local/go/src/math/rand/rand.go:185 +0x33
github.com/jaswdr/faker.Faker.IntBetween({{0x14ddf58?, 0xc000206000?}}, 0x0, 0x2540be400?)
	/Users/mgm/go/pkg/mod/github.com/jaswdr/faker@v1.19.1/faker.go:174 +0x62
github.com/sean-/bench-go-histograms.randDuration(...)
	/Users/mgm/src/circonus/bench-go-histograms/bench_test.go:21
github.com/sean-/bench-go-histograms.Benchmark_PromDuration.func1(0xc000c16000)
	/Users/mgm/src/circonus/bench-go-histograms/bench_test.go:141 +0x56
testing.(*B).RunParallel.func1()
	/usr/local/go/src/testing/benchmark.go:815 +0xbf
created by testing.(*B).RunParallel in goroutine 596
	/usr/local/go/src/testing/benchmark.go:808 +0x113
exit status 2
FAIL	github.com/sean-/bench-go-histograms	3.648s

If I run benchmarks in this repo I see:

go test -test.bench=. -benchmem
goos: darwin
goarch: amd64
pkg: github.com/openhistogram/circonusllhist
cpu: Intel(R) Xeon(R) W-3245 CPU @ 3.20GHz
BenchmarkRecord/intScale_1-32           	30185594	        41.01 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_1-32              	18782797	       101.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_2-32           	30544729	        39.53 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_2-32              	18797638	       102.0 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_4-32           	29100704	        39.48 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_4-32              	18675490	       102.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_8-32           	28827693	        39.64 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_8-32              	18787556	        64.02 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_16-32          	28817004	        39.69 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_16-32             	18870531	       102.2 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_32-32          	29944254	        39.43 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_32-32             	11184690	       102.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/intScale_64-32          	29513883	        39.99 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecord/value_64-32             	11585004	       102.1 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_1-32         	25304511	        46.00 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_1-32            	17800352	       127.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_2-32         	25049943	        45.78 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_2-32            	 9413766	       127.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_4-32         	24847816	        45.89 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_4-32            	 9479689	       127.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_8-32         	25517005	        45.58 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_8-32            	17582434	       127.7 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_16-32        	25193228	        46.08 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_16-32           	13603302	       127.6 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_32-32        	24715759	        45.77 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_32-32           	 9425791	       127.5 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/intScale_64-32        	25151556	        46.02 ns/op	       0 B/op	       0 allocs/op
BenchmarkRecordWithoutLookups/value_64-32           	 9596342	       127.8 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogramRecordValue-32                    	32869278	        34.55 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogramTypical-32                        	33347218	        34.14 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogramRecordIntScale-32                 	100000000	        10.59 ns/op	       0 B/op	       0 allocs/op
BenchmarkHistogramTypicalIntScale-32                	100000000	        10.57 ns/op	       0 B/op	       0 allocs/op
BenchmarkNew-32                                     	  705261	      1614 ns/op	    8020 B/op	       4 allocs/op
BenchmarkHistogramMerge/random-32                   	   12121	     98819 ns/op	   38564 B/op	      17 allocs/op
BenchmarkHistogramMerge/large_insert-32             	   23139	     51527 ns/op	   38568 B/op	      18 allocs/op
PASS
ok  	github.com/openhistogram/circonusllhist	78.106s

@sean-
Copy link
Contributor Author

sean- commented Feb 2, 2024

I spent a hot minute today re-looking at this, and I don't know what to make of this. I can't reproduce this when I use Run(), but I can when I use RunParallel(). I didn't dig further than that, but there's a race somewhere. Some seeds still have problems more reliably than others, but it's inconsistent, which is what has me thinking it's a race somewhere. I've updated my benchmark to use Run() and it works as expected, but with no parallelism or contention, which is what I wanted to demonstrate with this exercise.

sean-/bench-go-histograms@bdd25e3#diff-d85e4bbdd3120d2de9d967247dba8011f83f3bcd25c39a30c1ab7a1637be6b14L29-R31

and

sean-/bench-go-histograms@bdd25e3#diff-d85e4bbdd3120d2de9d967247dba8011f83f3bcd25c39a30c1ab7a1637be6b14L125-R128

Under the hood, it's calling faker.IntBetween(), which is just math/rand's Intn(). I get why circonusllhist.NewNoLocks() panics, but not circonusllhist.New() with h1.RecordDuration(). Anyway, I'm going to park this again for now, but I think there's still something here.

https://github.com/jaswdr/faker/blob/master/faker.go#L159-L174

Benchmark_CircLLHistDuration-10            	panic: runtime error: index out of range [-1]

goroutine 105 [running]:
math/rand.(*rngSource).Uint64(...)
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/math/rand/rng.go:249
math/rand.(*rngSource).Int63(0x140002a0080?)
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/math/rand/rng.go:234 +0x98
math/rand.(*Rand).Int63(...)
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/math/rand/rand.go:96
math/rand.(*Rand).Int63n(0x140000bebd0, 0x2540be400)
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/math/rand/rand.go:128 +0x68
math/rand.(*Rand).Intn(0x0?, 0x105310019?)
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/math/rand/rand.go:185 +0x44
github.com/jaswdr/faker.Faker.IntBetween({{0x105075738?, 0x140000bebd0?}}, 0x1, 0x10503a040?)
	/Users/seanc/go/pkg/mod/github.com/sean-/faker@v0.0.0-20231230002109-081f14dffd4c/faker.go:161 +0x6c
github.com/sean-/bench-go-histograms.randDuration(...)
	/Users/seanc/go/src/github.com/sean-/bench-go-histograms/bench_test.go:22
github.com/sean-/bench-go-histograms.Benchmark_CircLLHistDuration.func1(0x140002ac000)
	/Users/seanc/go/src/github.com/sean-/bench-go-histograms/bench_test.go:32 +0x60
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/testing/benchmark.go:815 +0xbc
created by testing.(*B).RunParallel in goroutine 67
	/opt/homebrew/Cellar/go/1.21.5/libexec/src/testing/benchmark.go:808 +0x104
exit status 2
FAIL	github.com/sean-/bench-go-histograms	1.718s

@sean-
Copy link
Contributor Author

sean- commented Feb 20, 2024

It looks like this was an issue in jaswdr/faker#167. I'm not sure it's completely fixed, however, because every ~100 runs or so I get the following panic, which isn't in this library's stack anymore. Thank you!

$ go test -test.bench=PromDuration -benchmem -count 1000
Benchmark_PromDuration-10    	panic: runtime error: index out of range [-1]

goroutine 635 [running]:
math/rand.(*rngSource).Uint64(...)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/math/rand/rng.go:249
math/rand.(*rngSource).Int63(0x9?)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/math/rand/rng.go:234 +0x8c
math/rand.(*Rand).Int63(...)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/math/rand/rand.go:96
math/rand.(*Rand).Int63n(0x140000a8c30, 0x2540be400)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/math/rand/rand.go:128 +0x68
math/rand.(*Rand).Intn(0xb?, 0x14000130000?)
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/math/rand/rand.go:185 +0x44
github.com/jaswdr/faker/v2.Faker.IntBetween({{0x102946538?, 0x140000a8c30?}}, 0x1?, 0x2540be400?)
	/Users/seanc/go/pkg/mod/github.com/jaswdr/faker/v2@v2.1.0/faker.go:182 +0xb0
github.com/sean-/bench-go-histograms.randDuration(...)
	/Users/seanc/go/src/github.com/sean-/bench-go-histograms/bench_test.go:22
github.com/sean-/bench-go-histograms.Benchmark_PromDuration.func1(0x1400007e000)
	/Users/seanc/go/src/github.com/sean-/bench-go-histograms/bench_test.go:151 +0x64
testing.(*B).RunParallel.func1()
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/testing/benchmark.go:797 +0xbc
created by testing.(*B).RunParallel in goroutine 610
	/opt/homebrew/Cellar/go/1.22.0/libexec/src/testing/benchmark.go:790 +0x104
exit status 2
FAIL	github.com/sean-/bench-go-histograms	15.354s

@sean- sean- closed this as completed Feb 20, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants