1
2
3
4
5
14 package main
15
16 import (
17 "errors"
18 "math/rand"
19 "os"
20 "runtime/pprof"
21 "sync"
22 "time"
23 )
24
25 func init() {
26 register("Cockroach9935", Cockroach9935)
27 }
28
29 type loggingT_cockroach9935 struct {
30 mu sync.Mutex
31 }
32
33 func (l *loggingT_cockroach9935) outputLogEntry() {
34 l.mu.Lock()
35 if err := l.createFile(); err != nil {
36 l.exit(err)
37 }
38 l.mu.Unlock()
39 }
40
41 func (l *loggingT_cockroach9935) createFile() error {
42 if rand.Intn(8)%4 > 0 {
43 return errors.New("")
44 }
45 return nil
46 }
47
48 func (l *loggingT_cockroach9935) exit(err error) {
49 l.mu.Lock()
50 defer l.mu.Unlock()
51 }
52
53
54
55
56
57
58
59
60
61
62
63
64 func Cockroach9935() {
65 prof := pprof.Lookup("goroutineleak")
66 defer func() {
67 time.Sleep(100 * time.Millisecond)
68 prof.WriteTo(os.Stdout, 2)
69 }()
70
71 for i := 0; i < 100; i++ {
72 go func() {
73 l := &loggingT_cockroach9935{}
74 go l.outputLogEntry()
75 }()
76 }
77 }
78
View as plain text