Compare commits
15 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
30f6caf69b | ||
|
|
102c91d7b1 | ||
|
|
d9efef266e | ||
|
|
7f14ad762b | ||
|
|
abe2807b6d | ||
|
|
ff6333f2c1 | ||
|
|
4a9bd423ee | ||
|
|
5d71cf066b | ||
|
|
5180b46602 | ||
|
|
4479594a30 | ||
|
|
e2a58b1cf3 | ||
|
|
c1d0accc88 | ||
|
|
56d6b65b5b | ||
|
|
d0bdcaaac7 | ||
|
|
ecc9df192f |
7 changed files with 35 additions and 270 deletions
7
.gitignore
vendored
7
.gitignore
vendored
|
|
@ -168,3 +168,10 @@
|
|||
/go1.24.5.src.tar.gz
|
||||
/go1.25rc1.src.tar.gz
|
||||
/go1.25rc2.src.tar.gz
|
||||
/go1.25.0.src.tar.gz
|
||||
/go1.25.1.src.tar.gz
|
||||
/go1.25.2.src.tar.gz
|
||||
/go1.25.3.src.tar.gz
|
||||
/go1.25.4.src.tar.gz
|
||||
/go1.25.5.src.tar.gz
|
||||
/go1.26rc1.src.tar.gz
|
||||
|
|
|
|||
15
.packit.yaml
15
.packit.yaml
|
|
@ -12,24 +12,23 @@ actions:
|
|||
- bash -c "echo - New release ${PACKIT_PROJECT_VERSION}"
|
||||
|
||||
jobs:
|
||||
# Fedora 41 follows Go 1.24
|
||||
# https://pagure.io/fesco/issue/3435
|
||||
- job: pull_from_upstream
|
||||
trigger: release
|
||||
dist_git_branches: fedora-41
|
||||
upstream_tag_include: "^go1.24.+"
|
||||
|
||||
# Fedora 42 follows Go 1.24
|
||||
- job: pull_from_upstream
|
||||
trigger: release
|
||||
dist_git_branches: fedora-42
|
||||
upstream_tag_include: "^go1.24.+"
|
||||
|
||||
# Fedora 43 follows Go 1.25
|
||||
- job: pull_from_upstream
|
||||
trigger: release
|
||||
dist_git_branches: fedora-43
|
||||
upstream_tag_include: "^go1.25.+"
|
||||
|
||||
# Fedora Rawhide follows the latest version
|
||||
- job: pull_from_upstream
|
||||
trigger: release
|
||||
dist_git_branches: fedora-rawhide
|
||||
upstream_tag_include: "^go1.25.+"
|
||||
upstream_tag_include: "^go1.26.+"
|
||||
|
||||
# Run Koji builds when Packit pull requests are merged
|
||||
- job: koji_build
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
This repository is maintained by packit.
|
||||
https://packit.dev/
|
||||
The file was generated using packit 1.9.0.post1.dev4+g48b4c222.
|
||||
The file was generated using packit 1.12.0.post1.dev20+g7d30dac21.
|
||||
|
|
|
|||
234
ff2636f.patch
234
ff2636f.patch
|
|
@ -1,234 +0,0 @@
|
|||
From ff2636f45e0087a1c6d8e895257d9c4729710811 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Pratt <mpratt@google.com>
|
||||
Date: Thu, 03 Apr 2025 03:26:25 +0000
|
||||
Subject: [PATCH] [release-branch.go1.24] runtime: cleanup M vgetrandom state before dropping P
|
||||
|
||||
When an M is destroyed, we put its vgetrandom state back on the shared
|
||||
list for another M to reuse. This list is simply a slice, so appending
|
||||
to the slice may allocate. Currently this operation is performed in
|
||||
mdestroy, after the P is released, meaning allocation is not allowed.
|
||||
|
||||
More the cleanup earlier in mdestroy when allocation is still OK.
|
||||
|
||||
Also add //go:nowritebarrierrec to mdestroy since it runs without a P,
|
||||
which would have caught this bug.
|
||||
|
||||
Fixes #73144.
|
||||
For #73141.
|
||||
|
||||
Change-Id: I6a6a636c3fbf5c6eec09d07a260e39dbb4d2db12
|
||||
Reviewed-on: https://go-review.googlesource.com/c/go/+/662455
|
||||
Reviewed-by: Jason Donenfeld <Jason@zx2c4.com>
|
||||
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
|
||||
Reviewed-by: Keith Randall <khr@golang.org>
|
||||
Reviewed-by: Keith Randall <khr@google.com>
|
||||
(cherry picked from commit 0b31e6d4cc804ab76ae8ced151ee2f50657aec14)
|
||||
---
|
||||
|
||||
diff --git a/src/runtime/os3_solaris.go b/src/runtime/os3_solaris.go
|
||||
index cf163a6..ded821b 100644
|
||||
--- a/src/runtime/os3_solaris.go
|
||||
+++ b/src/runtime/os3_solaris.go
|
||||
@@ -234,8 +234,11 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_aix.go b/src/runtime/os_aix.go
|
||||
index 93464cb..1b483c2 100644
|
||||
--- a/src/runtime/os_aix.go
|
||||
+++ b/src/runtime/os_aix.go
|
||||
@@ -186,8 +186,11 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_darwin.go b/src/runtime/os_darwin.go
|
||||
index 0ecbea7..6eab3b5 100644
|
||||
--- a/src/runtime/os_darwin.go
|
||||
+++ b/src/runtime/os_darwin.go
|
||||
@@ -344,8 +344,11 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_dragonfly.go b/src/runtime/os_dragonfly.go
|
||||
index a02696e..9b32350 100644
|
||||
--- a/src/runtime/os_dragonfly.go
|
||||
+++ b/src/runtime/os_dragonfly.go
|
||||
@@ -216,8 +216,11 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_linux.go b/src/runtime/os_linux.go
|
||||
index 8b3c4d0..fb46b81 100644
|
||||
--- a/src/runtime/os_linux.go
|
||||
+++ b/src/runtime/os_linux.go
|
||||
@@ -412,13 +412,12 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
- if mp.vgetrandomState != 0 {
|
||||
- vgetrandomPutState(mp.vgetrandomState)
|
||||
- mp.vgetrandomState = 0
|
||||
- }
|
||||
}
|
||||
|
||||
// #ifdef GOARCH_386
|
||||
diff --git a/src/runtime/os_netbsd.go b/src/runtime/os_netbsd.go
|
||||
index 735ace2..a06e5fe 100644
|
||||
--- a/src/runtime/os_netbsd.go
|
||||
+++ b/src/runtime/os_netbsd.go
|
||||
@@ -320,8 +320,11 @@
|
||||
// must continue working after unminit.
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_openbsd.go b/src/runtime/os_openbsd.go
|
||||
index 574bfa8..4ce4c3c 100644
|
||||
--- a/src/runtime/os_openbsd.go
|
||||
+++ b/src/runtime/os_openbsd.go
|
||||
@@ -182,8 +182,11 @@
|
||||
getg().m.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_plan9.go b/src/runtime/os_plan9.go
|
||||
index 2dbb42a..3b5965a 100644
|
||||
--- a/src/runtime/os_plan9.go
|
||||
+++ b/src/runtime/os_plan9.go
|
||||
@@ -217,8 +217,11 @@
|
||||
func unminit() {
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
+//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
func mdestroy(mp *m) {
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/os_windows.go b/src/runtime/os_windows.go
|
||||
index 7183e79..54407a3 100644
|
||||
--- a/src/runtime/os_windows.go
|
||||
+++ b/src/runtime/os_windows.go
|
||||
@@ -906,9 +906,11 @@
|
||||
mp.procid = 0
|
||||
}
|
||||
|
||||
-// Called from exitm, but not from drop, to undo the effect of thread-owned
|
||||
+// Called from mexit, but not from dropm, to undo the effect of thread-owned
|
||||
// resources in minit, semacreate, or elsewhere. Do not take locks after calling this.
|
||||
//
|
||||
+// This always runs without a P, so //go:nowritebarrierrec is required.
|
||||
+//go:nowritebarrierrec
|
||||
//go:nosplit
|
||||
func mdestroy(mp *m) {
|
||||
if mp.highResTimer != 0 {
|
||||
diff --git a/src/runtime/proc.go b/src/runtime/proc.go
|
||||
index e9873e5..21bee4d 100644
|
||||
--- a/src/runtime/proc.go
|
||||
+++ b/src/runtime/proc.go
|
||||
@@ -1935,6 +1935,9 @@
|
||||
mp.gsignal = nil
|
||||
}
|
||||
|
||||
+ // Free vgetrandom state.
|
||||
+ vgetrandomDestroy(mp)
|
||||
+
|
||||
// Remove m from allm.
|
||||
lock(&sched.lock)
|
||||
for pprev := &allm; *pprev != nil; pprev = &(*pprev).alllink {
|
||||
diff --git a/src/runtime/vgetrandom_linux.go b/src/runtime/vgetrandom_linux.go
|
||||
index a6ec4b7..40be022 100644
|
||||
--- a/src/runtime/vgetrandom_linux.go
|
||||
+++ b/src/runtime/vgetrandom_linux.go
|
||||
@@ -73,9 +73,16 @@
|
||||
return state
|
||||
}
|
||||
|
||||
-func vgetrandomPutState(state uintptr) {
|
||||
+// Free vgetrandom state from the M (if any) prior to destroying the M.
|
||||
+//
|
||||
+// This may allocate, so it must have a P.
|
||||
+func vgetrandomDestroy(mp *m) {
|
||||
+ if mp.vgetrandomState == 0 {
|
||||
+ return
|
||||
+ }
|
||||
+
|
||||
lock(&vgetrandomAlloc.statesLock)
|
||||
- vgetrandomAlloc.states = append(vgetrandomAlloc.states, state)
|
||||
+ vgetrandomAlloc.states = append(vgetrandomAlloc.states, mp.vgetrandomState)
|
||||
unlock(&vgetrandomAlloc.statesLock)
|
||||
}
|
||||
|
||||
diff --git a/src/runtime/vgetrandom_unsupported.go b/src/runtime/vgetrandom_unsupported.go
|
||||
index 070392c..43c53e1 100644
|
||||
--- a/src/runtime/vgetrandom_unsupported.go
|
||||
+++ b/src/runtime/vgetrandom_unsupported.go
|
||||
@@ -13,6 +13,6 @@
|
||||
return -1, false
|
||||
}
|
||||
|
||||
-func vgetrandomPutState(state uintptr) {}
|
||||
+func vgetrandomDestroy(mp *m) {}
|
||||
|
||||
func vgetrandomInit() {}
|
||||
43
golang.spec
43
golang.spec
|
|
@ -99,9 +99,9 @@
|
|||
%endif
|
||||
|
||||
# Comment out go_prerelease and go_patch as needed
|
||||
%global go_api 1.25
|
||||
%global go_prerelease rc2
|
||||
#global go_patch 4
|
||||
%global go_api 1.26
|
||||
%global go_prerelease rc1
|
||||
#global go_patch 1
|
||||
|
||||
%global go_version %{go_api}%{?go_patch:.%{go_patch}}%{?go_prerelease:~%{go_prerelease}}
|
||||
%global go_source %{go_api}%{?go_patch:.%{go_patch}}%{?go_prerelease}
|
||||
|
|
@ -123,11 +123,7 @@ BuildRequires: gcc-go >= 5
|
|||
%else
|
||||
BuildRequires: golang > 1.4
|
||||
%endif
|
||||
%if 0%{?rhel} > 6 || 0%{?fedora} > 0
|
||||
BuildRequires: hostname
|
||||
%else
|
||||
BuildRequires: net-tools
|
||||
%endif
|
||||
|
||||
# for tests
|
||||
BuildRequires: pcre2-devel, glibc-static, perl-interpreter, procps-ng
|
||||
|
|
@ -135,20 +131,20 @@ BuildRequires: pcre2-devel, glibc-static, perl-interpreter, procps-ng
|
|||
Provides: go = %{version}-%{release}
|
||||
|
||||
# Bundled/Vendored provides generated by bundled-deps.sh based on the in tree module data
|
||||
Provides: bundled(golang(github.com/google/pprof)) = 0.0.0.20250208200701.d0013a598941
|
||||
Provides: bundled(golang(github.com/ianlancetaylor/demangle)) = 0.0.0.20240912202439.0a2b6291aafd
|
||||
Provides: bundled(golang(golang.org/x/arch)) = 0.18.1.0.20250605182141.b2f4e2807dec
|
||||
Provides: bundled(golang(golang.org/x/build)) = 0.0.0.20250606033421.8c8ff6f34a83
|
||||
Provides: bundled(golang(golang.org/x/crypto)) = 0.39.0
|
||||
Provides: bundled(golang(golang.org/x/mod)) = 0.25.0
|
||||
Provides: bundled(golang(golang.org/x/net)) = 0.41.0
|
||||
Provides: bundled(golang(golang.org/x/sync)) = 0.15.0
|
||||
Provides: bundled(golang(golang.org/x/sys)) = 0.33.0
|
||||
Provides: bundled(golang(golang.org/x/telemetry)) = 0.0.0.20250606142133.60998feb31a8
|
||||
Provides: bundled(golang(golang.org/x/term)) = 0.32.0
|
||||
Provides: bundled(golang(golang.org/x/text)) = 0.26.0
|
||||
Provides: bundled(golang(github.com/google/pprof)) = 0.0.0.20251114195745.4902fdda35c8
|
||||
Provides: bundled(golang(github.com/ianlancetaylor/demangle)) = 0.0.0.20250417193237.f615e6bd150b
|
||||
Provides: bundled(golang(golang.org/x/arch)) = 0.23.0
|
||||
Provides: bundled(golang(golang.org/x/build)) = 0.0.0.20251128064159.b9bfd88b30e8
|
||||
Provides: bundled(golang(golang.org/x/crypto)) = 0.46.1.0.20251210140736.7dacc380ba00
|
||||
Provides: bundled(golang(golang.org/x/mod)) = 0.30.1.0.20251115032019.269c237cf350
|
||||
Provides: bundled(golang(golang.org/x/net)) = 0.47.1.0.20251128220604.7c360367ab7e
|
||||
Provides: bundled(golang(golang.org/x/sync)) = 0.19.0
|
||||
Provides: bundled(golang(golang.org/x/sys)) = 0.39.0
|
||||
Provides: bundled(golang(golang.org/x/telemetry)) = 0.0.0.20251128220624.abf20d0e57ec
|
||||
Provides: bundled(golang(golang.org/x/term)) = 0.38.0
|
||||
Provides: bundled(golang(golang.org/x/text)) = 0.32.0
|
||||
Provides: bundled(golang(golang.org/x/tools)) = 0.27.0
|
||||
Provides: bundled(golang(golang.org/x/tools)) = 0.34.0
|
||||
Provides: bundled(golang(golang.org/x/tools)) = 0.39.1.0.20251205000126.062ef7b6ced2
|
||||
Provides: bundled(golang(rsc.io/markdown)) = 0.0.0.20240306144322.0bf8f97ee8ef
|
||||
|
||||
Requires: %{name}-bin = %{version}-%{release}
|
||||
|
|
@ -256,11 +252,8 @@ Requires(preun): %{_sbindir}/update-alternatives
|
|||
# This is an odd issue, still looking for a better fix.
|
||||
Requires: glibc
|
||||
Requires: gcc
|
||||
%if 0%{?rhel} && 0%{?rhel} < 8
|
||||
Requires: git, subversion, mercurial
|
||||
%else
|
||||
Recommends: git, subversion, mercurial
|
||||
%endif
|
||||
Recommends: git-core, subversion, mercurial
|
||||
|
||||
%description bin
|
||||
%{summary}
|
||||
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ index 4dde3d20ec..3bcf0eba51 100644
|
|||
// license that can be found in the LICENSE file.
|
||||
|
||||
-//go:build linux || (freebsd && amd64)
|
||||
+//go:build (linux && !arm64) || (freebsd && amd64)
|
||||
+//go:build (linux && !(arm64 || riscv64)) || (freebsd && amd64)
|
||||
|
||||
package sanitizers_test
|
||||
|
||||
|
|
|
|||
2
sources
2
sources
|
|
@ -1 +1 @@
|
|||
SHA512 (go1.25rc2.src.tar.gz) = a63410d2ac9690146ae036a0d911939f6ab4ebb160f39022bd4350090572668f848f5f430a817c5bc70534d7b52470de21d7f3b9b208a8fd9e3dc570fc9d0e80
|
||||
SHA512 (go1.26rc1.src.tar.gz) = 6696ee765dcde64b830b14e20a5fdf6324916211bff80a62d0db0cbef58bb0856f02e88e95b2f1a3ad6d9282ebd04a377a0b000d56849576caedbd526c9a7923
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue