As part of https://go-review.googlesource.com/c/go/+/216198 which landed in the Go 1.15 cycle, the new function runqputbatch documents that it may acquire sched.lock because it needs to call globrunqputbatch, but it never does.
Not protecting globrunqputbatch can lead to very bad things, since manipulating the global runq is protected by sched.lock. In particular, we've seen nil g pointers in the global runq as well as general corruption of the global runq field in production.
The fix is straightforward and I'll upload it shortly. This problem is new in Go 1.15.
As part of https://go-review.googlesource.com/c/go/+/216198 which landed in the Go 1.15 cycle, the new function
runqputbatchdocuments that it may acquiresched.lockbecause it needs to callglobrunqputbatch, but it never does.Not protecting
globrunqputbatchcan lead to very bad things, since manipulating the globalrunqis protected bysched.lock. In particular, we've seen nilgpointers in the globalrunqas well as general corruption of the globalrunqfield in production.The fix is straightforward and I'll upload it shortly. This problem is new in Go 1.15.