| // 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. |
| |
| //go:build goexperiment.arenas |
| |
| package main |
| |
| import "arena" |
| |
| func main() { |
| a := arena.NewArena() |
| x := arena.New[[200]byte](a) |
| x[0] = 9 |
| a.Free() |
| // Use after free. |
| // |
| // ASAN should detect this deterministically as Free |
| // should poison the arena memory. |
| // |
| // MSAN should detect that this access is to freed |
| // memory. This may crash with an "accessed freed arena |
| // memory" error before MSAN gets a chance, but if MSAN |
| // was not enabled there would be a chance that this |
| // could fail to crash on its own. |
| println(x[0]) |
| } |