mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
![Rémy Oudompheng](/assets/img/avatar_default.png)
The supposedly overflowing variable was registerized. R=golang-dev, r CC=golang-dev https://golang.org/cl/5687061
278 lines
2.3 KiB
Go
278 lines
2.3 KiB
Go
// run
|
|
|
|
// Copyright 2012 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.
|
|
|
|
// gc used to overflow a counter when a variable was
|
|
// mentioned 256 times, and generate stack corruption.
|
|
|
|
package main
|
|
|
|
func main() {
|
|
F(1)
|
|
}
|
|
|
|
func F(arg int) {
|
|
var X interface{}
|
|
_ = X // used once
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 32 times
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 64 times
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 96 times
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 128 times
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 200 times
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0
|
|
X = 0 // used 256 times
|
|
if arg != 1 {
|
|
panic("argument was changed")
|
|
}
|
|
}
|