From db1c218d4f2ce63196aa162ca0743e08e4ae9c9c Mon Sep 17 00:00:00 2001 From: Jan Ziak <0xe2.0x9a.0x9b@gmail.com> Date: Thu, 25 Apr 2013 18:12:09 +0200 Subject: [PATCH] undo CL 8954044 / ad3c2ffb16d7 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 --- src/pkg/runtime/mgc0.c | 2 +- test/fixedbugs/issue5348.go | 37 ------------------------------------- 2 files changed, 1 insertion(+), 38 deletions(-) delete mode 100644 test/fixedbugs/issue5348.go 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 -} -- 2.48.1