Файловый менеджер - Редактировать - /usr/local/go/test/fixedbugs/issue31419.go
Ðазад
// run // Copyright 2019 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. // Issue 31419: race in getitab when two goroutines try // to do the same failed interface conversion. package main type T int func (t T) M() {} type I interface { M() M2() } var t T var e interface{} = &t var ok = false var ch = make(chan int) func main() { _, ok = e.(I) // populate itab cache with a false result go f() // get itab in a loop var i I for k := 0; k < 10000; k++ { i, ok = e.(I) // read the cached itab if ok { println("iteration", k, "i =", i, "&t =", &t) panic("conversion succeeded") } } <-ch } func f() { for i := 0; i < 10000; i++ { f1() } ch <- 1 } func f1() { defer func() { err := recover() if err == nil { panic("did not panic") } }() i := e.(I) // triggers itab.init, for getting the panic string _ = i }
| ver. 1.1 | |
.
| PHP 8.4.18 | Ð“ÐµÐ½ÐµÑ€Ð°Ñ†Ð¸Ñ Ñтраницы: 0 |
proxy
|
phpinfo
|
ÐаÑтройка