-
Notifications
You must be signed in to change notification settings - Fork 18k
cmd/link: Go 1.24.3 and 1.23.9 regression - duplicated definition of symbol dlopen #73617
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
Comments
The same issue also happens to me natively on darwin/amd64 |
I'm guessing it may have been introduced here: https://go-review.googlesource.com/c/go/+/662335/3/src/cmd/link/internal/loader/loader.go Maybe a corner case where |
cc @golang/compiler @cherrymui |
Possibly this is an interaction between the |
Oh, it is probably between the assembly symbol and data symbol at https://github.com/ebitengine/purego/blob/9059adfae616e486aa4145d6f4d5fefaa1b47a61/dlfcn.go#L85-L86. |
I don't believe they have the same name though. One is Subject: [PATCH] rename assembly
---
Index: dlfcn.go
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/dlfcn.go b/dlfcn.go
--- a/dlfcn.go (revision 2c36c15debde48b37b30e9ae9dea32483ef79922)
+++ b/dlfcn.go (date 1746629059115)
@@ -82,18 +82,18 @@
// sadly, I do not know of anyway to remove the assembly stubs entirely because //go:linkname doesn't
// appear to work if you link directly to the C function on darwin arm64.
-//go:linkname dlopen dlopen
+//go:linkname dlopen go_dlopen
var dlopen uintptr
var dlopenABI0 = uintptr(unsafe.Pointer(&dlopen))
-//go:linkname dlsym dlsym
+//go:linkname dlsym go_dlsym
var dlsym uintptr
var dlsymABI0 = uintptr(unsafe.Pointer(&dlsym))
-//go:linkname dlclose dlclose
+//go:linkname dlclose go_dlclose
var dlclose uintptr
var dlcloseABI0 = uintptr(unsafe.Pointer(&dlclose))
-//go:linkname dlerror dlerror
+//go:linkname dlerror go_dlerror
var dlerror uintptr
var dlerrorABI0 = uintptr(unsafe.Pointer(&dlerror))
Index: dlfcn_stubs.s
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/dlfcn_stubs.s b/dlfcn_stubs.s
--- a/dlfcn_stubs.s (revision 2c36c15debde48b37b30e9ae9dea32483ef79922)
+++ b/dlfcn_stubs.s (date 1746629059143)
@@ -6,21 +6,21 @@
#include "textflag.h"
// func dlopen(path *byte, mode int) (ret uintptr)
-TEXT dlopen(SB), NOSPLIT|NOFRAME, $0-0
+TEXT go_dlopen(SB), NOSPLIT|NOFRAME, $0-0
JMP purego_dlopen(SB)
RET
// func dlsym(handle uintptr, symbol *byte) (ret uintptr)
-TEXT dlsym(SB), NOSPLIT|NOFRAME, $0-0
+TEXT go_dlsym(SB), NOSPLIT|NOFRAME, $0-0
JMP purego_dlsym(SB)
RET
// func dlerror() (ret *byte)
-TEXT dlerror(SB), NOSPLIT|NOFRAME, $0-0
+TEXT go_dlerror(SB), NOSPLIT|NOFRAME, $0-0
JMP purego_dlerror(SB)
RET
// func dlclose(handle uintptr) (ret int)
-TEXT dlclose(SB), NOSPLIT|NOFRAME, $0-0
+TEXT go_dlclose(SB), NOSPLIT|NOFRAME, $0-0
JMP purego_dlclose(SB)
RET |
Yes, it is the assembly (TEXT) symbol and the data (BSS) symbol. The assembly function is short (6 bytes), smaller than the data symbol (uintptr, 8 bytes). Previously we just pick the one with content, i.e. the text symbol. Now we error out if the non-content symbol is larger, in the sense that if the code actually reads the variable as a uintptr, it will read to the next symbol. In this case, the code doesn't read the variable, just takes its address, which is fine. For backward compatibility we probably want to still allow this case, at least if one side is TEXT symbol. There is no easy way in the linker to detect whether we read the content as a variable. For a quick fix, you can change the variable definition from uintptr to uint8, like |
They do. Both sides don't have the dot. The name of the assembly symbol is the one at the TEXT line, i.e. Your patch changes both from dlopen to go_dlopen, so they still have the same name. |
This patch to the linker may make it work. I haven't thoroughly tested it though. diff --git a/src/cmd/link/internal/loader/loader.go b/src/cmd/link/internal/loader/loader.go
index 128173b8cf..52d48912c7 100644
--- a/src/cmd/link/internal/loader/loader.go
+++ b/src/cmd/link/internal/loader/loader.go
@@ -455,29 +455,45 @@ func (st *loadState) addSym(name string, ver int, r *oReader, li uint32, kind in
// If one is a DATA symbol (i.e. has content, DataSize != 0)
// and the other is BSS, the one with content wins.
// If both are BSS, the one with larger size wins.
- // Specifically, the "overwrite" variable and the final result are
+ //
+ // For a special case, we allow a TEXT symbol overwrites a BSS symbol
+ // even if the BSS symbol has larger size. This is because there is
+ // code like below to take the address of a function
+ //
+ // //go:linkname fn
+ // var fn uintptr
+ // var fnAddr = uintptr(unsafe.Pointer(&fn))
+ //
+ // TODO: maybe limit this case to just pointer sized variable?
+ //
+ // In summary, the "overwrite" variable and the final result are
//
// new sym old sym overwrite
// ---------------------------------------------
// DATA DATA true => ERROR
// DATA lg/eq BSS sm/eq true => new wins
// DATA small BSS large true => ERROR
+ // TEXT BSS true => new wins
// BSS large DATA small true => ERROR
// BSS large BSS small true => new wins
// BSS sm/eq D/B lg/eq false => old wins
- overwrite := r.DataSize(li) != 0 || oldsz < sz
+ // BSS TEXT false => old wins
+ overwrite := r.DataSize(li) != 0 || oldsz < sz ||
+ sym.AbiSymKindToSymKind[objabi.SymKind(osym.Type())].IsText()
if overwrite {
// new symbol overwrites old symbol.
oldtyp := sym.AbiSymKindToSymKind[objabi.SymKind(oldsym.Type())]
- if !(oldtyp.IsData() && oldr.DataSize(oldli) == 0) || oldsz > sz {
- log.Fatalf("duplicated definition of symbol %s, from %s and %s", name, r.unit.Lib.Pkg, oldr.unit.Lib.Pkg)
+ newtyp := sym.AbiSymKindToSymKind[objabi.SymKind(osym.Type())]
+ if !(oldtyp.IsData() && oldr.DataSize(oldli) == 0) || (oldsz > sz && !newtyp.IsText()) {
+ log.Fatalf("duplicated definition of symbol %s, from %s (type %s size %d) and %s (type %s size %d)", name, r.unit.Lib.Pkg, newtyp, sz, oldr.unit.Lib.Pkg, oldtyp, oldsz)
}
l.objSyms[oldi] = objSym{r.objidx, li}
} else {
// old symbol overwrites new symbol.
- typ := sym.AbiSymKindToSymKind[objabi.SymKind(oldsym.Type())]
- if !typ.IsData() { // only allow overwriting data symbol
- log.Fatalf("duplicated definition of symbol %s, from %s and %s", name, r.unit.Lib.Pkg, oldr.unit.Lib.Pkg)
+ newtyp := sym.AbiSymKindToSymKind[objabi.SymKind(osym.Type())]
+ if !newtyp.IsData() { // only allow overwriting data symbol
+ oldtyp := sym.AbiSymKindToSymKind[objabi.SymKind(oldsym.Type())]
+ log.Fatalf("duplicated definition of symbol %s, from %s (type %s size %d) and %s (type %s size %d)", name, r.unit.Lib.Pkg, newtyp, sz, oldr.unit.Lib.Pkg, oldtyp, oldsz)
}
}
return oldi |
This addresses the issue golang/go#73617. Closes #313
This addresses the issue golang/go#73617. Closes #313
The patch appears to be working for the builds that were failing for us. |
updating to github.com/ebitengine/purego v0.9.0-alpha.3.0.20250507171635-5047c08daa38 made it work, thank you! |
This works, though I recommend the stable branch version: go get github.com/ebitengine/purego@1638563e361522e5f63511d84c4541ae1c5fd704 EDIT: We've released v0.8.3 go get github.com/ebitengine/[email protected] |
## Which problem is this PR solving? - Our release #7107 is blocked by the build error `link: duplicated definition of symbol dlopen, from github.com/ebitengine/purego and github.com/ebitengine/purego` - Ongoing upstream issue golang/go#73617 ## Description of the changes - Pin to a pre-release of https://github.com/ebitengine/purego v0.8.3 that provides a patch ## How was this change tested? - CI --------- Signed-off-by: Yuri Shkuro <[email protected]>
…o 1.23.9' from Preston Thorpe Go 1.23.9 introduced a change with to it's linker that caused a `duplicate symbol` error with purego 1.82 this is the recommended fix per golang/go#73617 Closes #1466
commit 2b4726b Author: wwqgtxx <[email protected]> Date: Sat May 10 12:32:47 2025 +0800 fix: build on go1.24.3 golang/go#73617 commit 26e6d83 Author: xishang0128 <[email protected]> Date: Wed May 7 17:07:39 2025 +0800 chore: make select display the specified testUrl for MetaCubeX#2013 commit 50d7834 Author: wwqgtxx <[email protected]> Date: Mon May 5 01:32:25 2025 +0800 chore: change the separator of the `SAFE_PATHS` environment variable to the default separator of the operating system platform (i.e., `;` in Windows and `:` in other systems) commit 86c127d Author: wwqgtxx <[email protected]> Date: Sun May 4 10:39:15 2025 +0800 fix: missing read waiter for cancelers commit febb602 Author: wwqgtxx <[email protected]> Date: Sun May 4 11:09:40 2025 +0800 fix: hysteria2 inbound not set UDPTimeout commit 9e57b29 Author: wwqgtxx <[email protected]> Date: Sat May 3 15:06:13 2025 +0800 chore: update dependencies commit 791ea5e Author: wwqgtxx <[email protected]> Date: Thu May 1 12:33:21 2025 +0800 chore: allow setting addition safePaths by environment variable `SAFE_PATHS` package managers can allow for pre-defined safe paths without disabling the entire security check feature for MetaCubeX#2004 commit 7e7016b Author: wwqgtxx <[email protected]> Date: Thu May 1 01:27:08 2025 +0800 chore: removed `routing-mark` and `interface-name` of the group, please set it directly on the proxy instead commit b4fe669 Author: wwqgtxx <[email protected]> Date: Wed Apr 30 23:21:13 2025 +0800 chore: better path checks commit cad26ac Author: wwqgtxx <[email protected]> Date: Wed Apr 30 17:26:45 2025 +0800 chore: fetcher will change duration to achieve fast retry when the update failed with a 2x factor step from 1s to `interval` commit f328203 Author: wwqgtxx <[email protected]> Date: Wed Apr 30 16:03:02 2025 +0800 feat: not inline proxy-provider can also set `payload` as fallback proxies when file/http parsing fails commit 5c40a63 Author: wwqgtxx <[email protected]> Date: Wed Apr 30 14:09:15 2025 +0800 feat: not inline rule-provider can also set `payload` as fallback rules when file/http parsing fails commit 61d6a9a Author: wwqgtxx <[email protected]> Date: Wed Apr 30 13:21:42 2025 +0800 fix: fetcher does not start the pull loop when local file parsing errors occur and the first remote update fails commit a013ac3 Author: wwqgtxx <[email protected]> Date: Tue Apr 29 21:52:44 2025 +0800 chore: give better error messages for some stupid config files commit ee5d77c Author: wwqgtxx <[email protected]> Date: Tue Apr 29 21:15:48 2025 +0800 chore: cleanup tls clientFingerprint code commit 936df90 Author: wwqgtxx <[email protected]> Date: Tue Apr 29 09:01:54 2025 +0800 chore: update dependencies commit f774276 Author: Larvan2 <[email protected]> Date: Mon Apr 28 03:07:21 2025 +0000 fix: ensure wait group completes commit aa51b9f Author: wwqgtxx <[email protected]> Date: Mon Apr 28 10:28:45 2025 +0800 chore: replace using internal batch package to x/sync/errgroup In the original batch implementation, the Go() method will always start a new goroutine and then wait for the concurrency limit, which is unnecessary for the current code. x/sync/errgroup will block Go() until the concurrency limit is met, which can effectively reduce memory usage. In addition, the original batch always saves the return value of Go(), but it is not used in the current code, which will also waste a lot of memory space in high concurrency scenarios. commit d55b047 Author: wwqgtxx <[email protected]> Date: Sun Apr 27 09:39:46 2025 +0800 chore: ignore interfaces not with FlagUp in local interface finding commit efc7abc Author: xishang0128 <[email protected]> Date: Fri Apr 25 12:10:18 2025 +0800 actions: fix pacman build commit c2301f6 Author: wwqgtxx <[email protected]> Date: Fri Apr 25 10:34:34 2025 +0800 chore: rebuild fingerprint and keypair handle commit 468cfc3 Author: WeidiDeng <[email protected]> Date: Thu Apr 24 19:50:16 2025 +0800 fix: set sni to servername if not specified for trojan outbound (MetaCubeX#1991) commit 5dce957 Author: xishang0128 <[email protected]> Date: Thu Apr 24 17:25:14 2025 +0800 actions: improve build process commit 4ecb49b Author: wwqgtxx <[email protected]> Date: Wed Apr 23 12:25:42 2025 +0800 chore: dynamic fetch remoteAddr in hysteria2 service commit 7de4af2 Author: wwqgtxx <[email protected]> Date: Wed Apr 23 12:10:37 2025 +0800 fix: shadowtls test commit 48d8efb Author: wwqgtxx <[email protected]> Date: Wed Apr 23 12:00:10 2025 +0800 fix: do NOT reset the quic-go internal state when only port is different commit e6e7aa5 Author: wwqgtxx <[email protected]> Date: Tue Apr 22 23:44:55 2025 +0800 fix: alpn apply on shadowtls commit 99aa1b0 Author: wwqgtxx <[email protected]> Date: Tue Apr 22 20:49:54 2025 +0800 feat: inbound support shadow-tls commit 52ad793 Author: wwqgtxx <[email protected]> Date: Tue Apr 22 20:09:24 2025 +0800 fix: shadowtls v1 not work commit 2fb9331 Author: wwqgtxx <[email protected]> Date: Tue Apr 22 10:37:05 2025 +0800 fix: some resources are not released in listener commit 793ce45 Author: wwqgtxx <[email protected]> Date: Mon Apr 21 22:58:08 2025 +0800 chore: update quic-go to 0.51.0 commit 39d6a0d Author: wwqgtxx <[email protected]> Date: Mon Apr 21 12:07:33 2025 +0800 chore: update utls to 1.7.0 commit d5243ad Author: wwqgtxx <[email protected]> Date: Sat Apr 19 02:04:09 2025 +0800 chore: better global-client-fingerprint handle commit 6236cb1 Author: wwqgtxx <[email protected]> Date: Sat Apr 19 01:32:55 2025 +0800 chore: cleanup trojan code commit 619c9dc Author: wwqgtxx <[email protected]> Date: Fri Apr 18 20:16:51 2025 +0800 chore: apply the default interface/mark of the dialer in the final stage commit 9c5067e Author: wwqgtxx <[email protected]> Date: Fri Apr 18 19:34:21 2025 +0800 action: disable MinGW's path conversion in test commit feee9b3 Author: wwqgtxx <[email protected]> Date: Fri Apr 18 16:59:53 2025 +0800 chore: remove unneeded tls timeout in anytls commit 63e66f4 Author: wwqgtxx <[email protected]> Date: Fri Apr 18 16:59:28 2025 +0800 chore: cleanup trojan code commit bad61f9 Author: wwqgtxx <[email protected]> Date: Fri Apr 18 11:40:37 2025 +0800 fix: avoid panic in inbound test commit 69ce4d0 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 23:40:46 2025 +0800 chore: speed up inbound test commit b59f11f Author: wwqgtxx <[email protected]> Date: Thu Apr 17 21:07:35 2025 +0800 chore: add singMux inbound test for shadowsocks/trojan/vless/vmess commit 30d90d4 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 21:06:55 2025 +0800 chore: update option checks to use IsZeroOptions commit 76052b5 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 12:54:36 2025 +0800 fix: grpc in trojan not apply client-fingerprint commit 7d7f5c8 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 10:02:48 2025 +0800 chore: add inbound test for tuic commit e79465d Author: wwqgtxx <[email protected]> Date: Thu Apr 17 09:26:12 2025 +0800 chore: add inbound test for hysteria2 commit 345d3d7 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 09:01:26 2025 +0800 chore: add inbound test for anytls commit 3d806b5 Author: wwqgtxx <[email protected]> Date: Thu Apr 17 01:36:14 2025 +0800 chore: add inbound test for shadowsocks/trojan commit b5fcd1d Author: wwqgtxx <[email protected]> Date: Thu Apr 17 00:11:24 2025 +0800 fix: chacha8-ietf-poly1305 not work commit b21b8ee Author: wwqgtxx <[email protected]> Date: Wed Apr 16 22:22:56 2025 +0800 fix: panic in ssr packet commit d0d0c39 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 20:44:48 2025 +0800 chore: add inbound test for vmess/vless commit a75e570 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 20:38:10 2025 +0800 fix: vision conn read short buffer error commit 9e0889c Author: wwqgtxx <[email protected]> Date: Wed Apr 16 13:16:11 2025 +0800 fix: observable test commit 55cbbf7 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 13:13:01 2025 +0800 fix: singledo test commit 664b134 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 13:02:50 2025 +0800 fix: websocket data losing commit ba3c44a Author: wwqgtxx <[email protected]> Date: Wed Apr 16 09:39:52 2025 +0800 chore: code cleanup commit dcb20e2 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 08:47:44 2025 +0800 fix: websocket server upgrade in golang1.20 commit 3d2cb99 Author: wwqgtxx <[email protected]> Date: Wed Apr 16 01:00:06 2025 +0800 fix: grpc outbound not apply ca fingerprint commit 984535f Author: wwqgtxx <[email protected]> Date: Tue Apr 15 21:59:35 2025 +0800 action: run tests on more platforms commit 8fa4e81 Author: wwqgtxx <[email protected]> Date: Sun Apr 13 03:03:28 2025 +0800 chore: remove internal crypto/tls fork in reality server commit 7551c8a Author: wwqgtxx <[email protected]> Date: Sat Apr 12 23:42:57 2025 +0800 chore: remove unneed code commit 237e2ed Author: wwqgtxx <[email protected]> Date: Sat Apr 12 22:46:26 2025 +0800 chore: tun will add firewall rule for Profile ALL on windows system stack commit fe01033 Author: wwqgtxx <[email protected]> Date: Sat Apr 12 22:27:07 2025 +0800 chore: quic sniffer should use the exact length of crypto stream when assembling commit 84cd0ef Author: wwqgtxx <[email protected]> Date: Sat Apr 12 20:27:30 2025 +0800 chore: remove internal crypto/tls fork in shadowtls commit cedb36d Author: wwqgtxx <[email protected]> Date: Sat Apr 12 11:19:03 2025 +0800 chore: using SetupContextForConn to reduce the DialContext cannot be cancelled commit 7a260f7 Author: HiMetre <[email protected]> Date: Fri Apr 11 09:20:58 2025 +0800 fix: udp dial support ip4p (MetaCubeX#1377) commit 8085c68 Author: wwqgtxx <[email protected]> Date: Fri Apr 11 00:33:07 2025 +0800 chore: decrease direct using *net.TCPConn commit dbb5b7d Author: wwqgtxx <[email protected]> Date: Thu Apr 10 23:32:26 2025 +0800 fix: SetupContextForConn should return context error to user commit bfd06eb Author: wwqgtxx <[email protected]> Date: Thu Apr 10 01:16:54 2025 +0800 chore: rebuild SetupContextForConn with context.AfterFunc commit e8af058 Author: wwqgtxx <[email protected]> Date: Thu Apr 10 00:13:14 2025 +0800 fix: websocketWithEarlyDataConn can't close underlay conn when is dialing or not dialed commit 487d7fa Author: wwqgtxx <[email protected]> Date: Wed Apr 9 17:53:36 2025 +0800 fix: panic under some stupid input config commit 4b15568 Author: wwqgtxx <[email protected]> Date: Wed Apr 9 12:33:01 2025 +0800 chore: cleanup metadata code commit cac2bf7 Author: wwqgtxx <[email protected]> Date: Wed Apr 9 11:39:00 2025 +0800 chore: cleanup netip code commit b2d2890 Author: wwqgtxx <[email protected]> Date: Wed Apr 9 10:32:13 2025 +0800 chore: cleanup resolveUDPAddr code commit 8752f80 Author: anytls <[email protected]> Date: Wed Apr 9 10:55:53 2025 +0900 fix: anytls stream read error (MetaCubeX#1970) Co-authored-by: anytls <anytls> commit a6c0c02 Author: wwqgtxx <[email protected]> Date: Tue Apr 8 23:42:21 2025 +0800 chore: ignore interfaces not in IfOperStatusUp when fetch system dns server on windows commit 2acb0b7 Author: wwqgtxx <[email protected]> Date: Tue Apr 8 19:20:29 2025 +0800 fix: tun IncludeInterface/ExcludeInterface priority commit 2a40eba Author: wwqgtxx <[email protected]> Date: Tue Apr 8 19:07:39 2025 +0800 feat: tun add `exclude-src-port`,`exclude-src-port-range`,`exclude-dst-port` and `exclude-dst-port-range` on linux commit a22efd5 Author: okhowang <[email protected]> Date: Tue Apr 8 12:10:30 2025 +0800 feat: add exclude port and exclude port range options (MetaCubeX#1951) Fixes MetaCubeX#1769 commit 9e8f4ad Author: wwqgtxx <[email protected]> Date: Sun Apr 6 10:43:21 2025 +0800 chore: better addr parsing commit 09c7ee0 Author: wwqgtxx <[email protected]> Date: Sun Apr 6 10:12:57 2025 +0800 fix: grpc server panic commit 2a08c44 Author: wwqgtxx <[email protected]> Date: Sat Apr 5 10:48:07 2025 +0800 action: fix run build on pull_request commit 190047c Author: wwqgtxx <[email protected]> Date: Fri Apr 4 21:05:54 2025 +0800 fix: grpc transport not apply dial timeout commit 24a9ff6 Author: wwqgtxx <[email protected]> Date: Fri Apr 4 13:33:00 2025 +0800 fix: disallow dialFunc be called after grpc transport has be closed commit efa2243 Author: wwqgtxx <[email protected]> Date: Fri Apr 4 11:54:19 2025 +0800 fix: shut it down more aggressively in grpc transport closing commit b0bd4f4 Author: wwqgtxx <[email protected]> Date: Fri Apr 4 11:12:08 2025 +0800 fix: resources not released when hysteria2 verification failed commit eaaccff Author: wwqgtxx <[email protected]> Date: Fri Apr 4 10:55:16 2025 +0800 fix: race in Single.Do commit e81f3a9 Author: wwqgtxx <[email protected]> Date: Fri Apr 4 09:08:52 2025 +0800 fix: correctly implement references to proxies commit 323973f Author: wwqgtxx <[email protected]> Date: Fri Apr 4 00:22:52 2025 +0800 fix: converter judgment conditions commit ed7533c Author: 5aaee9 <[email protected]> Date: Thu Apr 3 08:52:19 2025 -0700 fix: tproxy high cpu usage (MetaCubeX#1957) commit 7de24e2 Author: wwqgtxx <[email protected]> Date: Thu Apr 3 23:41:24 2025 +0800 fix: StreamGunWithConn not synchronously close the incoming net.Conn commit 622d99d Author: wwqgtxx <[email protected]> Date: Thu Apr 3 22:42:32 2025 +0800 chore: rebuild outdated proxy auto close mechanism commit 7f1225b Author: wwqgtxx <[email protected]> Date: Thu Apr 3 22:41:05 2025 +0800 fix: grpc transport can't be closed commit 23ffe45 Author: wwqgtxx <[email protected]> Date: Thu Apr 3 19:47:49 2025 +0800 chore: using http/httptrace to get local/remoteAddr for grpc client commit 7b37fcf Author: wwqgtxx <[email protected]> Date: Wed Apr 2 23:47:34 2025 +0800 fix: auto_redirect should only hijack DNS requests from local addresses commit daa592c Author: wwqgtxx <[email protected]> Date: Wed Apr 2 21:13:46 2025 +0800 fix: converter panic commit 577f64a Author: wwqgtxx <[email protected]> Date: Wed Apr 2 14:39:07 2025 +0800 fix: X25519MLKEM768 does not work properly with reality commit 025ff19 Author: wwqgtxx <[email protected]> Date: Fri Mar 28 10:54:11 2025 +0800 fix: wrong conditional judgment in removeExtraHTTPHostPort MetaCubeX#1939 commit f615346 Author: anytls <[email protected]> Date: Thu Mar 27 20:25:31 2025 +0800 chore: anytls protocol version 2 (MetaCubeX#1936) commit 7b38261 Author: wwqgtxx <[email protected]> Date: Tue Mar 25 01:19:39 2025 +0800 chore: update gvisor commit 0f32c05 Author: enfein <[email protected]> Date: Thu Mar 20 05:58:04 2025 +0000 feat: support UDP over TCP in mieru (MetaCubeX#1926) commit 4f8b70c Author: 5aaee9 <[email protected]> Date: Wed Mar 19 12:20:48 2025 +0800 fix: buffer in tproxy not recycle (MetaCubeX#1923) commit dcef787 Author: wwqgtxx <[email protected]> Date: Tue Mar 18 09:09:54 2025 +0800 chore: update utls commit 7c444a9 Author: wwqgtxx <[email protected]> Date: Mon Mar 17 23:51:21 2025 +0800 fix: correctly handle ipv6 zone commit e3d4ec2 Author: wwqgtxx <[email protected]> Date: Mon Mar 17 14:00:51 2025 +0800 fix: race at interfaceName setting commit 14217e7 Author: xishang0128 <[email protected]> Date: Mon Mar 17 13:21:23 2025 +0800 chore: update service capabilities to include CAP_SYS_TIME and CAP_DAC_OVERRIDE commit 68abb13 Author: wwqgtxx <[email protected]> Date: Mon Mar 17 10:42:13 2025 +0800 chore: support longest-prefix matches in local interface finding commit dee5898 Author: Cesaryuan <[email protected]> Date: Sat Mar 15 13:27:29 2025 +0800 fix: memory leak due to unclosed session (MetaCubeX#1908) commit 1e22f4d Author: wwqgtxx <[email protected]> Date: Fri Mar 14 12:07:23 2025 +0800 chore: reduce data copying in quic sniffer and better handle data fragmentation and overlap commit a7a796b Author: wwqgtxx <[email protected]> Date: Thu Mar 13 16:27:29 2025 +0800 chore: cleanup quic sniff's code commit ff89bf0 Author: Cesaryuan <[email protected]> Date: Thu Mar 13 13:28:40 2025 +0800 feat: add gost-plugin in which only ws and mws are currently supported. (MetaCubeX#1896) commit 801f3c3 Author: 5aaee9 <[email protected]> Date: Thu Mar 13 13:19:36 2025 +0800 feat: support sniff quic fragment data (MetaCubeX#1899) commit 7ff046a Author: wwqgtxx <[email protected]> Date: Thu Mar 13 08:52:27 2025 +0800 chore: modify UDPSniff's function signature to prepare for its ability to handle multiple packets. commit 0ed159e Author: wwqgtxx <[email protected]> Date: Wed Mar 12 13:33:52 2025 +0800 chore: code cleanup commit 070eb31 Author: wwqgtxx <[email protected]> Date: Wed Mar 12 11:42:57 2025 +0800 chore: speedup system stack in tun commit f318b80 Author: wwqgtxx <[email protected]> Date: Tue Mar 11 22:50:55 2025 +0800 chore: better cache implement for group's getProxies commit c0de3c0 Author: wwqgtxx <[email protected]> Date: Mon Mar 10 11:10:39 2025 +0800 fix: some default value in dialer not restore in tun when config reload commit 4bd3ae5 Author: wwqgtxx <[email protected]> Date: Mon Mar 10 10:45:07 2025 +0800 chore: dialer will consider the routing of the local interface when auto-detect-interface in tun is enabled for MetaCubeX#1881 MetaCubeX#1819 commit 00e6466 Author: Skyxim <[email protected]> Date: Mon Mar 10 09:13:38 2025 +0800 chore: update checksum generation step commit c94b442 Author: Skyxim <[email protected]> Date: Mon Mar 10 09:02:08 2025 +0800 chore: add checksum generation for production artifacts
Go version
go 1.24.3/1.23.9 (linux amd64 --> darwin amd64)
Output of
go env
in your module/workspace:What did you do?
I went to release Go 1.24.3 and Go 1.23.9 into our build system and some packages began failing when trying to cross-compile to darwin/amd64:
I've reproduced it down to a small example:
What did you see happen?
I received an error:
link: duplicated definition of symbol dlopen, from github.com/ebitengine/purego and github.com/ebitengine/purego
What did you expect to see?
I expected it to continue to compile, as it did in Go 1.24.2
The text was updated successfully, but these errors were encountered: