From 01e1b0cb5377d665065707f9a270b223ea85a570 Mon Sep 17 00:00:00 2001 From: Dmitriy Vyukov Date: Thu, 11 Jul 2013 13:52:20 -0400 Subject: [PATCH] runtime: adjust traceback for new preemptive reality Currently it crashes as follows: fatal error: unknown pc ... goroutine 71698 [runnable]: runtime.racegoend() src/pkg/runtime/race.c:171 runtime.goexit() src/pkg/runtime/proc.c:1276 +0x9 created by runtime_test.testConcurrentReadsAfterGrowth src/pkg/runtime/map_test.go:264 +0x332 R=golang-dev, rsc CC=golang-dev https://golang.org/cl/10674047 --- src/pkg/runtime/traceback_arm.c | 2 +- src/pkg/runtime/traceback_x86.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pkg/runtime/traceback_arm.c b/src/pkg/runtime/traceback_arm.c index b91017eea5..599f6093eb 100644 --- a/src/pkg/runtime/traceback_arm.c +++ b/src/pkg/runtime/traceback_arm.c @@ -164,7 +164,7 @@ runtime·gentraceback(uintptr pc0, uintptr sp0, uintptr lr0, G *gp, int32 skip, waspanic = f->entry == (uintptr)runtime·sigpanic; // Do not unwind past the bottom of the stack. - if(frame.pc == (uintptr)runtime·goexit || f->entry == (uintptr)runtime·mstart || f->entry == (uintptr)_rt0_go) + if(f->entry == (uintptr)runtime·goexit || f->entry == (uintptr)runtime·mstart || f->entry == (uintptr)_rt0_go) break; // Unwind to next frame. diff --git a/src/pkg/runtime/traceback_x86.c b/src/pkg/runtime/traceback_x86.c index a6c6ebcae9..3a9b864e89 100644 --- a/src/pkg/runtime/traceback_x86.c +++ b/src/pkg/runtime/traceback_x86.c @@ -170,7 +170,7 @@ runtime·gentraceback(uintptr pc0, uintptr sp0, uintptr lr0, G *gp, int32 skip, frame.fp += 2*sizeof(uintptr); // Do not unwind past the bottom of the stack. - if(frame.pc == (uintptr)runtime·goexit || f->entry == (uintptr)runtime·mstart || f->entry == (uintptr)_rt0_go) + if(f->entry == (uintptr)runtime·goexit || f->entry == (uintptr)runtime·mstart || f->entry == (uintptr)_rt0_go) break; // Unwind to next frame. -- 2.48.1