aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Ziak <0xe2.0x9a.0x9b@gmail.com>2013-04-25 18:12:09 +0200
committerJan Ziak <0xe2.0x9a.0x9b@gmail.com>2013-04-25 18:12:09 +0200
commitdb1c218d4f2ce63196aa162ca0743e08e4ae9c9c (patch)
tree14c6d4d1d71964bf66bd225b6fee23475a882396
parente9bbe3a8da9043e13b74ec4427608364b068bed7 (diff)
downloadgo-db1c218d4f2ce63196aa162ca0743e08e4ae9c9c.tar.gz
go-db1c218d4f2ce63196aa162ca0743e08e4ae9c9c.zip
undo CL 8954044 / ad3c2ffb16d7
It works on i386, but fails on amd64 and arm. ««« original CL description runtime: prevent the GC from seeing the content of a frame in runfinq() Fixes #5348. R=golang-dev, dvyukov CC=golang-dev https://golang.org/cl/8954044 »»» R=golang-dev, r CC=golang-dev https://golang.org/cl/8695051
-rw-r--r--src/pkg/runtime/mgc0.c2
-rw-r--r--test/fixedbugs/issue5348.go37
2 files changed, 1 insertions, 38 deletions
diff --git a/src/pkg/runtime/mgc0.c b/src/pkg/runtime/mgc0.c
index 6369da2720..f9dbdbb4a1 100644
--- a/src/pkg/runtime/mgc0.c
+++ b/src/pkg/runtime/mgc0.c
@@ -2191,7 +2191,7 @@ runfinq(void)
framesz = sizeof(uintptr) + f->nret;
if(framecap < framesz) {
runtime·free(frame);
- frame = runtime·mallocgc(framesz, FlagNoPointers, 0, 1);
+ frame = runtime·mal(framesz);
framecap = framesz;
}
*(void**)frame = f->arg;
diff --git a/test/fixedbugs/issue5348.go b/test/fixedbugs/issue5348.go
deleted file mode 100644
index 94c3d5d15f..0000000000
--- a/test/fixedbugs/issue5348.go
+++ /dev/null
@@ -1,37 +0,0 @@
-// run
-
-// Copyright 2013 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 5348: finalizers keep data live for a surprising amount of time
-
-package main
-
-import (
- "runtime"
-)
-
-type T struct {
- S *string
-}
-
-func newString(s string) *string {
- return &s
-}
-
-var c = make(chan int)
-
-func foo() {
- t := &T{S: newString("foo")}
- runtime.SetFinalizer(t, func(p *T) { c <- 0 })
- runtime.SetFinalizer(t.S, func(p *string) { c <- 0 })
-}
-
-func main() {
- foo()
- runtime.GC()
- <-c
- runtime.GC()
- <-c
-}