mirror of
https://github.com/juanfont/headscale.git
synced 2026-01-11 20:00:28 +01:00
[Bug] unaligned 64-bit atomic operation #990
Closed
opened 2025-12-29 02:27:06 +01:00 by adam
·
6 comments
No Branch/Tag Specified
main
update_flake_lock_action
gh-pages
kradalby/release-v0.27.2
dependabot/go_modules/golang.org/x/crypto-0.45.0
dependabot/go_modules/github.com/opencontainers/runc-1.3.3
copilot/investigate-headscale-issue-2788
copilot/investigate-visibility-issue-2788
copilot/investigate-issue-2833
copilot/debug-issue-2846
copilot/fix-issue-2847
dependabot/go_modules/github.com/go-viper/mapstructure/v2-2.4.0
dependabot/go_modules/github.com/docker/docker-28.3.3incompatible
kradalby/cli-experiement3
doc/0.26.1
doc/0.25.1
doc/0.25.0
doc/0.24.3
doc/0.24.2
doc/0.24.1
doc/0.24.0
kradalby/build-docker-on-pr
topic/docu-versioning
topic/docker-kos
juanfont/fix-crash-node-id
juanfont/better-disclaimer
update-contributors
topic/prettier
revert-1893-add-test-stage-to-docs
add-test-stage-to-docs
remove-node-check-interval
fix-empty-prefix
fix-ephemeral-reusable
bug_report-debuginfo
autogroups
logs-to-stderr
revert-1414-topic/fix_unix_socket
rename-machine-node
port-embedded-derp-tests-v2
port-derp-tests
duplicate-word-linter
update-tailscale-1.36
warn-against-apache
ko-fi-link
more-acl-tests
fix-typo-standalone
parallel-nolint
tparallel-fix
rerouting
ssh-changelog-docs
oidc-cleanup
web-auth-flow-tests
kradalby-gh-runner
fix-proto-lint
remove-funding-links
go-1.19
enable-1.30-in-tests
0.16.x
cosmetic-changes-integration
tmp-fix-integration-docker
fix-integration-docker
configurable-update-interval
show-nodes-online
hs2021
acl-syntax-fixes
ts2021-implementation
fix-spurious-updates
unstable-integration-tests
mandatory-stun
embedded-derp
prtemplate-fix
v0.28.0-beta.1
v0.27.2-rc.1
v0.27.1
v0.27.0
v0.27.0-beta.2
v0.27.0-beta.1
v0.26.1
v0.26.0
v0.26.0-beta.2
v0.26.0-beta.1
v0.25.1
v0.25.0
v0.25.0-beta.2
v0.24.3
v0.25.0-beta.1
v0.24.2
v0.24.1
v0.24.0
v0.24.0-beta.2
v0.24.0-beta.1
v0.23.0
v0.23.0-rc.1
v0.23.0-beta.5
v0.23.0-beta.4
v0.23.0-beta3
v0.23.0-beta2
v0.23.0-beta1
v0.23.0-alpha12
v0.23.0-alpha11
v0.23.0-alpha10
v0.23.0-alpha9
v0.23.0-alpha8
v0.23.0-alpha7
v0.23.0-alpha6
v0.23.0-alpha5
v0.23.0-alpha4
v0.23.0-alpha4-docker-ko-test9
v0.23.0-alpha4-docker-ko-test8
v0.23.0-alpha4-docker-ko-test7
v0.23.0-alpha4-docker-ko-test6
v0.23.0-alpha4-docker-ko-test5
v0.23.0-alpha-docker-release-test-debug2
v0.23.0-alpha-docker-release-test-debug
v0.23.0-alpha4-docker-ko-test4
v0.23.0-alpha4-docker-ko-test3
v0.23.0-alpha4-docker-ko-test2
v0.23.0-alpha4-docker-ko-test
v0.23.0-alpha3
v0.23.0-alpha2
v0.23.0-alpha1
v0.22.3
v0.22.2
v0.23.0-alpha-docker-release-test
v0.22.1
v0.22.0
v0.22.0-alpha3
v0.22.0-alpha2
v0.22.0-alpha1
v0.22.0-nfpmtest
v0.21.0
v0.20.0
v0.19.0
v0.19.0-beta2
v0.19.0-beta1
v0.18.0
v0.18.0-beta4
v0.18.0-beta3
v0.18.0-beta2
v0.18.0-beta1
v0.17.1
v0.17.0
v0.17.0-beta5
v0.17.0-beta4
v0.17.0-beta3
v0.17.0-beta2
v0.17.0-beta1
v0.17.0-alpha4
v0.17.0-alpha3
v0.17.0-alpha2
v0.17.0-alpha1
v0.16.4
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.16.0-beta7
v0.16.0-beta6
v0.16.0-beta5
v0.16.0-beta4
v0.16.0-beta3
v0.16.0-beta2
v0.16.0-beta1
v0.15.0
v0.15.0-beta6
v0.15.0-beta5
v0.15.0-beta4
v0.15.0-beta3
v0.15.0-beta2
v0.15.0-beta1
v0.14.0
v0.14.0-beta2
v0.14.0-beta1
v0.13.0
v0.13.0-beta3
v0.13.0-beta2
v0.13.0-beta1
upstream/v0.12.4
v0.12.4
v0.12.3
v0.12.2
v0.12.2-beta1
v0.12.1
v0.12.0-beta2
v0.12.0-beta1
v0.11.0
v0.10.8
v0.10.7
v0.10.6
v0.10.5
v0.10.4
v0.10.3
v0.10.2
v0.10.1
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.1
v0.8.0
v0.7.1
v0.7.0
v0.6.1
v0.6.0
v0.5.2
v0.5.1
v0.5.0
v0.4.0
v0.3.6
v0.3.5
v0.3.4
v0.3.3
v0.3.2
v0.3.1
v0.3.0
v0.2.2
v0.2.1
v0.2.0
v0.1.1
v0.1.0
Labels
Clear labels
CLI
DERP
DNS
Nix
OIDC
SSH
bug
database
documentation
duplicate
enhancement
faq
good first issue
grants
help wanted
might-come
needs design doc
needs investigation
no-stale-bot
out of scope
performance
policy 📝
pull-request
question
regression
routes
stale
tags
tailscale-feature-gap
well described ❤️
wontfix
Mirrored from GitHub Pull Request
No Label
bug
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/headscale#990
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @trackmafia on GitHub (Mar 30, 2025).
Is this a support request?
Is there an existing issue for this?
Current Behavior
fresh install of headscale server, TLS-ALPN-01 SSL enabled. Using Raspberry PI 3, 32bit arm7 install as server. Opnsense 25.1.4 router as client.
tailscale client on opnsense router. node registers but hangs at client. tailscale client never logs in. On headscale server, node is approved but never comes online.
Expected Behavior
after authorizing node, client would log in and join the tailnet
Steps To Reproduce
Environment
Runtime environment
Debug information
here are the logs:
Mar 30 16:15:35 headscale[16010]: 2025-03-30T16:15:35+01:00 INF ../../../home/runner/work/headscale/headscale/hscontrol/poll.go:634 > node has connected, mapSession: 0x44244b8, chan: 0x4501080 node=J>
Mar 30 16:15:35 headscale[16010]: 2025-03-30T16:15:35+01:00 INF ../../../home/runner/work/headscale/headscale/hscontrol/poll.go:634 > node has disconnected, mapSession: 0x44244b8, chan: 0x4501080 nod>
Mar 30 16:15:35 headscale[16010]: 2025/03/30 16:15:35 http2: panic serving 1.2.3.4:21191: unaligned 64-bit atomic operation
Mar 30 16:15:35 headscale[16010]: goroutine 1294 [running]:
Mar 30 16:15:35 headscale[16010]: golang.org/x/net/http2.(*serverConn).runHandler.func1()
Mar 30 16:15:35 headscale[16010]: /home/runner/go/pkg/mod/golang.org/x/net@v0.34.0/http2/server.go:2468 +0x184
Mar 30 16:15:35 headscale[16010]: panic({0x15eeb80, 0x1b66b18})
Mar 30 16:15:35 headscale[16010]: /nix/store/0b6vsy4fa4i4qpk1011hi6251nwdg5y8-go-1.23.4/share/go/src/runtime/panic.go:785 +0xfc
Mar 30 16:15:35 headscale[16010]: internal/runtime/atomic.panicUnaligned()
Mar 30 16:15:35 headscale[16010]: /nix/store/0b6vsy4fa4i4qpk1011hi6251nwdg5y8-go-1.23.4/share/go/src/internal/runtime/atomic/unaligned.go:8 +0x24
Mar 30 16:15:35 headscale[16010]: internal/runtime/atomic.Xadd64(0x461d7b4, 0x1)
Mar 30 16:15:35 headscale[16010]: /nix/store/0b6vsy4fa4i4qpk1011hi6251nwdg5y8-go-1.23.4/share/go/src/internal/runtime/atomic/atomic_arm.s:265 +0x14
Mar 30 16:15:35 headscale[16010]: github.com/juanfont/headscale/hscontrol/mapper.(*Mapper).marshalMapResponse(0x461d780, {0x73, {0x488f298, 0x4}, 0x1, {{0x68, 0x51, 0xfc, 0x7b, 0x1, ...}}, ...}, ...)
Mar 30 16:15:35 headscale[16010]: /home/runner/work/headscale/headscale/hscontrol/mapper/mapper.go:331 +0x3c
Mar 30 16:15:35 headscale[16010]: github.com/juanfont/headscale/hscontrol/mapper.(*Mapper).FullMapResponse(0x461d780, {0x73, {0x488f298, 0x4}, 0x1, {{0x68, 0x51, 0xfc, 0x7b, 0x1, ...}}, ...}, ...)
Mar 30 16:15:35 headscale[16010]: /home/runner/work/headscale/headscale/hscontrol/mapper/mapper.go:197 +0xfc
Mar 30 16:15:35 headscale[16010]: github.com/juanfont/headscale/hscontrol.(*mapSession).serveLongPoll(0x44244b8)
Mar 30 16:15:35 headscale[16010]: /home/runner/work/headscale/headscale/hscontrol/poll.go:289 +0x1238
Mar 30 16:15:35 headscale[16010]: github.com/juanfont/headscale/hscontrol.(*noiseServer).NoisePollNetMapHandler(0x46bc100, {0x1b75960, 0x49524a0}, 0x47b86e8)
Mar 30 16:15:35 headscale[16010]: /home/runner/work/headscale/headscale/hscontrol/noise.go:225 +0x250
Mar 30 16:15:35 headscale[16010]: net/http.HandlerFunc.ServeHTTP(0x47480c8, {0x1b75960, 0x49524a0}, 0x47b86e8)
Mar 30 16:15:35 headscale[16010]: /nix/store/0b6vsy4fa4i4qpk1011hi6251nwdg5y8-go-1.23.4/share/go/src/net/http/server.go:2220 +0x34
Mar 30 16:15:35 headscale[16010]: github.com/juanfont/headscale/hscontrol.prometheusMiddleware.func1({0x1b75960, 0x49524a0}, 0x47b86e8)
Mar 30 16:15:35 headscale[16010]: /home/runner/work/headscale/headscale/hscontrol/metrics.go:82 +0x244
Mar 30 16:15:35 headscale[16010]: net/http.HandlerFunc.ServeHTTP(0x4aa8700, {0x1b75960, 0x49524a0}, 0x47b86e8)
Mar 30 16:15:35 headscale[16010]: /nix/store/0b6vsy4fa4i4qpk1011hi6251nwdg5y8-go-1.23.4/share/go/src/net/http/server.go:2220 +0x34
Mar 30 16:15:35 headscale[16010]: github.com/gorilla/mux.(*Router).ServeHTTP(0x46fa0c0, {0x1b75960, 0x49524a0}, 0x499c638)
Mar 30 16:15:35 headscale[16010]: /home/runner/go/pkg/mod/github.com/gorilla/mux@v1.8.1/mux.go:212 +0x1dc
Mar 30 16:15:35 headscale[16010]: golang.org/x/net/http2.(*serverConn).runHandler(0x479e788, 0x49524a0, 0x499c638, 0x4911800)
Mar 30 16:15:35 headscale[16010]: /home/runner/go/pkg/mod/golang.org/x/net@v0.34.0/http2/server.go:2475 +0xd8
Mar 30 16:15:35 headscale[16010]: created by golang.org/x/net/http2.(*serverConn).scheduleHandler in goroutine 216
Mar 30 16:15:35 headscale[16010]: /home/runner/go/pkg/mod/golang.org/x/net@v0.34.0/http2/server.go:2409 +0x248
@muru commented on GitHub (Apr 12, 2025):
I'm seeing the same thing on 32-bit Arch Linux ARM (
armv7l). I have tried:headscale-0.25.1-1)0.25.1(https://github.com/juanfont/headscale/releases/download/v0.25.1/headscale_0.25.1_linux_armv7)0.24.3(https://github.com/juanfont/headscale/releases/download/v0.24.3/headscale_0.24.3_linux_armv7)I'm running Headscale behind an nginx reverse proxy (however it is using
stream+ssl_preread, so the traffic is pretty much untouched by nginx).@habnabit commented on GitHub (Apr 14, 2025):
same issue; same context. trying with
armv6now.e: nope, same issue
@github-actions[bot] commented on GitHub (Jul 14, 2025):
This issue is stale because it has been open for 90 days with no activity.
@habnabit commented on GitHub (Jul 14, 2025):
has this bug been identified or patched? i haven’t checked if there’s any newer releases
Message ID: @.***>
@kradalby commented on GitHub (Jul 15, 2025):
No, and I think realistically we will not put any effort into solving this. I have no 32 bit hardware and its a runtime error so we wont be able to catch it in tests.
Happy to take contributions as long as they fit within maintainability and so on, but it will be hard for us to guarantee that we dont break it again in the future.
@Duncaen commented on GitHub (Oct 30, 2025):
The issue was that
atomic.AddUint64[0] was used on a uint64 struct member, which happened to be unaliged because of the struct layout.This code was already removed and in other places the where atomic are used the bug is fixed because the
atomic.Int64[1] type is used, which provide the alignment.0a43aab8f5/hscontrol/mapper/batcher_lockfree.go (L37)