mirror of
https://github.com/golang/go
synced 2024-11-08 09:26:11 -07:00
462b78fe70
TestSetgidStress originally spawns 1000 threads for stress testing. It caused timeout on some builders so CL 415677 reduced to 50 in short mode. But it still causes flaky timeouts in longtest builders, so reduce the number of threads in long mode as well. Should fix #53641. Change-Id: I02f4ef8a143bb1faafe3d11ad223f36f5cc245c6 Reviewed-on: https://go-review.googlesource.com/c/go/+/419453 Reviewed-by: Bryan Mills <bcmills@google.com> Run-TryBot: Cherry Mui <cherryyz@google.com> TryBot-Result: Gopher Robot <gobot@golang.org>
36 lines
681 B
Go
36 lines
681 B
Go
// Copyright 2022 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
// Stress test setgid and thread creation. A thread
|
|
// can get a SIGSETXID signal early on at thread
|
|
// initialization, causing crash. See issue 53374.
|
|
|
|
package cgotest
|
|
|
|
/*
|
|
#include <sys/types.h>
|
|
#include <unistd.h>
|
|
*/
|
|
import "C"
|
|
|
|
import (
|
|
"runtime"
|
|
"testing"
|
|
)
|
|
|
|
func testSetgidStress(t *testing.T) {
|
|
const N = 50
|
|
ch := make(chan int, N)
|
|
for i := 0; i < N; i++ {
|
|
go func() {
|
|
C.setgid(0)
|
|
ch <- 1
|
|
runtime.LockOSThread() // so every goroutine uses a new thread
|
|
}()
|
|
}
|
|
for i := 0; i < N; i++ {
|
|
<-ch
|
|
}
|
|
}
|