Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

TestFastTagDuplicatesBug fails on 32bit platforms #10

Open
davide125 opened this issue Jul 5, 2021 · 4 comments
Open

TestFastTagDuplicatesBug fails on 32bit platforms #10

davide125 opened this issue Jul 5, 2021 · 4 comments

Comments

@davide125
Copy link

--- FAIL: TestFastTagDuplicatesBug (0.00s)
panic: unaligned 64-bit atomic operation [recovered]
	panic: unaligned 64-bit atomic operation
goroutine 83 [running]:
testing.tRunner.func1.2(0x56890f20, 0x568c44ec)
	/usr/lib/golang/src/testing/testing.go:1143 +0x2ce
testing.tRunner.func1(0x57e007e0)
	/usr/lib/golang/src/testing/testing.go:1146 +0x3fc
panic(0x56890f20, 0x568c44ec)
	/usr/lib/golang/src/runtime/panic.go:971 +0x491
runtime/internal/atomic.panicUnaligned()
	/usr/lib/golang/src/runtime/internal/atomic/unaligned.go:8 +0x38
runtime/internal/atomic.Xadd64(0x569e07dc, 0x1, 0x0, 0x0, 0x56815705)
	/usr/lib/golang/src/runtime/internal/atomic/asm_386.s:107 +0x11
github.com/trafficstars/metrics.(*iterationHandler).start(0x57934090)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:67 +0x39
github.com/trafficstars/metrics.(*iterationHandlersT).getOrCreateIterationHandler(0x569e07d0, 0x568c747c, 0x579281c0, 0x0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:188 +0x138
github.com/trafficstars/metrics.(*iterationHandlersT).Add(0x569e07d0, 0x568c747c, 0x579281c0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:195 +0x32
github.com/trafficstars/metrics.(*common).run(0x579281c0, 0xf8475800, 0xd)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common.go:158 +0x56
github.com/trafficstars/metrics.(*common).Run(0x579281c0, 0xf8475800, 0xd)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common.go:172 +0x79
github.com/trafficstars/metrics.(*common).init(0x579281c0, 0x578a2030, 0x568c81bc, 0x579281c0, 0x5682fdf6, 0x7, 0x568c7ef4, 0x57930520, 0x57918708)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common.go:68 +0x17d
github.com/trafficstars/metrics.(*commonInt64).init(0x579281c0, 0x578a2030, 0x568c81bc, 0x579281c0, 0x5682fdf6, 0x7, 0x568c7ef4, 0x57930520)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common_int64.go:17 +0xcf
github.com/trafficstars/metrics.(*MetricCount).init(...)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/count.go:18
github.com/trafficstars/metrics.(*Registry).newMetricCount(0x578a2030, 0x5682fdf6, 0x7, 0x568c7ef4, 0x57930520, 0x57930520)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/count.go:13 +0x90
github.com/trafficstars/metrics.(*Registry).Count(0x578a2030, 0x5682fdf6, 0x7, 0x568c7ef4, 0x57930520, 0x568c7ef4)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/count.go:47 +0xc7
github.com/trafficstars/metrics.Count(...)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/count.go:28
github.com/trafficstars/metrics.TestFastTagDuplicatesBug(0x57e007e0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/fast_tags_test.go:25 +0x37d
testing.tRunner(0x57e007e0, 0x568c3bbc)
	/usr/lib/golang/src/testing/testing.go:1193 +0x102
created by testing.(*T).Run
	/usr/lib/golang/src/testing/testing.go:1238 +0x233
exit status 2
FAIL	github.com/trafficstars/metrics	0.034s

You can see the full log when building on i686 at https://koji.fedoraproject.org/koji/taskinfo?taskID=71314449 (look at build.log).

@davide125
Copy link
Author

TestMetricInterfaceOnGaugeAggregativeBuffered is also failing in a similar way

--- FAIL: TestMetricInterfaceOnGaugeAggregativeBuffered (0.00s)
panic: unaligned 64-bit atomic operation [recovered]
	panic: unaligned 64-bit atomic operation
goroutine 8 [running]:
testing.tRunner.func1.2(0x567ce120, 0x568016e0)
	/usr/lib/golang/src/testing/testing.go:1143 +0x2ce
testing.tRunner.func1(0x58482540)
	/usr/lib/golang/src/testing/testing.go:1146 +0x3fc
panic(0x567ce120, 0x568016e0)
	/usr/lib/golang/src/runtime/panic.go:971 +0x491
runtime/internal/atomic.panicUnaligned()
	/usr/lib/golang/src/runtime/internal/atomic/unaligned.go:8 +0x38
runtime/internal/atomic.Xadd64(0x5691d7dc, 0x1, 0x0, 0x0, 0x56752705)
	/usr/lib/golang/src/runtime/internal/atomic/asm_386.s:107 +0x11
github.com/trafficstars/metrics.(*iterationHandler).start(0x58468390)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:67 +0x39
github.com/trafficstars/metrics.(*iterationHandlersT).getOrCreateIterationHandler(0x5691d7d0, 0x5680464c, 0x585320b0, 0x0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:188 +0x138
github.com/trafficstars/metrics.(*iterationHandlersT).Add(0x5691d7d0, 0x5680464c, 0x585320b0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/iterators.go:195 +0x32
github.com/trafficstars/metrics.(*common).run(0x585320b0, 0xf8475800, 0xd)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common.go:158 +0x56
github.com/trafficstars/metrics.(*commonAggregative).run(0x585320b0, 0xf8475800, 0xd)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common_aggregative.go:480 +0x68
github.com/trafficstars/metrics.(*commonAggregative).Run(0x585320b0, 0xf8475800, 0xd)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common_aggregative.go:472 +0x79
github.com/trafficstars/metrics.(*common).init(0x585320b0, 0x58468360, 0x568053fc, 0x585320b0, 0x0, 0x0, 0x0, 0x0, 0x58410700)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common.go:68 +0x17d
github.com/trafficstars/metrics.(*commonAggregative).init(0x585320b0, 0x58468360, 0x568053fc, 0x585320b0, 0x0, 0x0, 0x0, 0x0)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common_aggregative.go:311 +0x5da
github.com/trafficstars/metrics.(*commonAggregativeBuffered).init(...)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/common_aggregative_buffered.go:64
github.com/trafficstars/metrics.(*MetricGaugeAggregativeBuffered).init(...)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/gauge_aggregative_buffered.go:19
github.com/trafficstars/metrics.(*Registry).newMetricGaugeAggregativeBuffered(0x58468360, 0x0, 0x0, 0x0, 0x0, 0x56758e35)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/gauge_aggregative_buffered.go:14 +0x90
github.com/trafficstars/metrics.TestMetricInterfaceOnGaugeAggregativeBuffered(0x58482540)
	/builddir/build/BUILD/metrics-0250d8a27518636f3c7ac48ec726b84fefd7c4e8/_build/src/github.com/trafficstars/metrics/gauge_aggregative_buffered_test.go:8 +0x4b
testing.tRunner(0x58482540, 0x56800dd0)
	/usr/lib/golang/src/testing/testing.go:1193 +0x102
created by testing.(*T).Run
	/usr/lib/golang/src/testing/testing.go:1238 +0x233
exit status 2
FAIL	github.com/trafficstars/metrics	0.023s

@xaionaro
Copy link
Contributor

xaionaro commented Jul 9, 2021

@davide125 : OK, it seems I should remove dependency on trafficstars/metrics from contest. How urgent is this?

@davide125
Copy link
Author

Not urgent at all. Thanks!

@demdxx
Copy link

demdxx commented Nov 7, 2021

Please be sure that all alignments is correct, for the correct case

https://github.com/trafficstars/metrics/blob/master/iterators.go#L67

type iterationHandlersT struct {
	sync.Mutex

	m             atomicmap.Map
	routinesCount int64
	//iterators []*metricIterator
}

All atomic variable must be on the top in the order from bigger in size variables to smaller

type iterationHandlersT struct {
	sync.Mutex
	routinesCount int64 // First all 64bits then 32bits and etc... 

	m             atomicmap.Map
	//iterators []*metricIterator
}

It's also specific of ARM architecture CPUs.
Please check all structures for the atomic var alignments :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants