Skip to content

runtime: writebarrierptr_nostore1 called with mp.p == nil #10223

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
bradfitz opened this issue Mar 23, 2015 · 6 comments
Closed

runtime: writebarrierptr_nostore1 called with mp.p == nil #10223

bradfitz opened this issue Mar 23, 2015 · 6 comments
Milestone

Comments

@bradfitz
Copy link
Contributor

windows-amd64 just failed in runtime/pprof tests with:

http://build.golang.org/log/15ccbe982c8df1a9416adcd42f773b2d812f2fc6

fatal error: writebarrierptr_nostore1 called with mp.p == nil

runtime stack:
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:543 +0xa0
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f373b0)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f37610)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f37870)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f37ad0)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f37d30)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f37f90)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f381f0)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f38450)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
runtime.writebarrierptr_nostore1.func1()
    C:/workdir/go/src/runtime/mbarrier.go:108 +0x119
runtime.systemstack(0x3f386b0)
    C:/workdir/go/src/runtime/asm_amd64.s:278 +0xb5
runtime.writebarrierptr_nostore1(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:112 +0x57
runtime.writebarrierptr(0xc082001368, 0xc082016fc0)
    C:/workdir/go/src/runtime/mbarrier.go:135 +0x9d
runtime.stdcall(0x76dccba0, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:374 +0x51
runtime.stdcall1(0x76dccba0, 0xfffffffffffffff4, 0x0)
    C:/workdir/go/src/runtime/os1_windows.go:398 +0x3d
runtime.write(0x2, 0x713fb0, 0xd, 0x713fb0)
    C:/workdir/go/src/runtime/os1_windows.go:252 +0x9d
runtime.writeErr(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1_write.go:12 +0x49
runtime.gwrite(0x713fb0, 0xd, 0xd)
    C:/workdir/go/src/runtime/print1.go:58 +0x179
runtime.printstring(0x713fb0, 0xd)
    C:/workdir/go/src/runtime/print1.go:214 +0x18c
runtime.throw(0x758190, 0x30)
    C:/workdir/go/src/runtime/panic.go:537 +0x27
...additional frames elided...

goroutine 1 [chan receive]:
testing.RunTests(0x7848c8, 0x11fc0e0, 0xe, 0xe, 0x4afe01)
    C:/workdir/go/src/testing/testing.go:561 +0xce2
testing.(*M).Run(0xc08200c280, 0x12218c0)
    C:/workdir/go/src/testing/testing.go:490 +0xf5
main.main()
    C:/Users/WINGOP~1/AppData/Local/Temp/go-build545502822/runtime/pprof/_test/_testmain.go:82 +0x294

goroutine 17 [syscall, locked to thread]:
runtime.goexit()
    C:/workdir/go/src/runtime/asm_amd64.s:2466 +0x1

goroutine 58 [garbage collection]:
runtime.GC()
    C:/workdir/go/src/runtime/mgc.go:225 +0x2e
runtime/pprof_test.TestTraceStress(0xc08204ea20)
    C:/workdir/go/src/runtime/pprof/trace_test.go:141 +0x4a7
testing.tRunner(0xc08204ea20, 0x11fc1e8)
    C:/workdir/go/src/testing/testing.go:452 +0x104
created by testing.RunTests
    C:/workdir/go/src/testing/testing.go:560 +0xc8c

goroutine 61 [trace reader (blocked)]:
runtime.ReadTrace(0x0, 0x0, 0x0)
    C:/workdir/go/src/runtime/trace.go:313 +0x244
runtime/pprof.StartTrace.func1(0x2fe97d0, 0xc08202aa80)
    C:/workdir/go/src/runtime/pprof/pprof.go:629 +0x34
created by runtime/pprof.StartTrace
    C:/workdir/go/src/runtime/pprof/pprof.go:635 +0x9a

goroutine 41 [select (no cases)]:
runtime/pprof_test.TestTraceSymbolize.func1()
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:38 +0x34
created by runtime/pprof_test.TestTraceSymbolize
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:39 +0x1f8

goroutine 42 [chan send (nil chan)]:
runtime/pprof_test.TestTraceSymbolize.func2()
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:42 +0x59
created by runtime/pprof_test.TestTraceSymbolize
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:43 +0x211

goroutine 43 [chan receive (nil chan)]:
runtime/pprof_test.TestTraceSymbolize.func3()
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:46 +0x4f
created by runtime/pprof_test.TestTraceSymbolize
    C:/workdir/go/src/runtime/pprof/trace_stack_test.go:47 +0x22a

goroutine 59 [chan receive]:
runtime/pprof_test.TestTraceStress.func1(0xc0820d6c60, 0xc08214e980)
    C:/workdir/go/src/runtime/pprof/trace_test.go:99 +0x52
created by runtime/pprof_test.TestTraceStress
    C:/workdir/go/src/runtime/pprof/trace_test.go:101 +0xea

goroutine 60 [syscall, locked to thread]:
syscall.Syscall6(0x76dc09c0, 0x5, 0x170, 0xc082145f20, 0x1, 0xc0820f9e6c, 0x0, 0x0, 0x0, 0x0, ...)
    C:/workdir/go/src/runtime/syscall_windows.go:139 +0x7b
syscall.ReadFile(0x170, 0xc082145f20, 0x1, 0x1, 0xc0820f9e6c, 0x0, 0x0, 0x0)
    C:/workdir/go/src/syscall/zsyscall_windows.go:283 +0xed
syscall.Read(0x170, 0xc082145f20, 0x1, 0x1, 0x1, 0x0, 0x0)
    C:/workdir/go/src/syscall/syscall_windows.go:286 +0x8d
os.(*File).read(0xc0820201d8, 0xc082145f20, 0x1, 0x1, 0x0, 0x0, 0x0)
    C:/workdir/go/src/os/file_windows.go:299 +0x1de
os.(*File).Read(0xc0820201d8, 0xc082145f20, 0x1, 0x1, 0x1, 0x0, 0x0)
    C:/workdir/go/src/os/file.go:95 +0xc7
runtime/pprof_test.TestTraceStress.func3(0xc0820201d8, 0xc0820d6c60, 0xc08214e980)
    C:/workdir/go/src/runtime/pprof/trace_test.go:115 +0xa0
created by runtime/pprof_test.TestTraceStress
    C:/workdir/go/src/runtime/pprof/trace_test.go:118 +0x2c0

goroutine 66 [runnable]:
runtime/pprof_test.TestTraceStress.func4(0xc0820d6c60)
    C:/workdir/go/src/runtime/pprof/trace_test.go:129
created by runtime/pprof_test.TestTraceStress
    C:/workdir/go/src/runtime/pprof/trace_test.go:139 +0x4a2
FAIL    runtime/pprof   12.237s

/cc @aclements @RLH @rsc @dvyukov

@bradfitz bradfitz added this to the Go1.5 milestone Mar 23, 2015
@RLH
Copy link
Contributor

RLH commented Mar 23, 2015

Any hope of getting the elided frames? From what I'm seeing there is a throw that results in the throw logic also failing and that throw also fails. The cause of the original throw has had its broken stack frame elided.

@bradfitz
Copy link
Contributor Author

That stack is just copy/pasted from a build failure on build.golang.org, which runs all.bash with the default settings. (no custom GOTRACEBACK env vars, etc).

But it seems that the windows-amd64-race builder is failing like this ~half the time (the other half it just times out after 10 minutes instead), so it should be easy for somebody to reproduce and capture more logging somehow.

@minux
Copy link
Member

minux commented Mar 24, 2015

I just saw that i also failed on a previous commit on the nacl-amd64p32
builder:

http://build.golang.org/log/6bc2419376e65f381076f15802ca1fe10e9098d4
(it was on commit 08af4c3, but that is
probably irrelevant for this issue.)

It has a better stack trace with no elided frames, but it might be caused by
a separate issue:
fatal error: writebarrierptr_nostore1 called with mp.p == nil

runtime stack:
runtime.throw(0x28e428, 0x30)
/tmp/buildlet-scatch909750053/go/src/runtime/panic.go:543 +0x120
runtime.writebarrierptr_nostore1.func1()
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:108 +0x160
runtime.systemstack(0x109a5e80)
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:231 +0x100
runtime.writebarrierptr_nostore1(0x1091ea34, 0x109ba280)
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:112 +0x80
runtime.writebarrierptr(0x1091ea34, 0x109ba280)
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:135 +0xc0
runtime.newosproc(0x1091ea00, 0x1098c000)
/tmp/buildlet-scatch909750053/go/src/runtime/os1_nacl.go:75 +0x60
runtime.newm(0x0, 0x10913400)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:995 +0x1a0
runtime.startm(0x10913400, 0x10913d00)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1058 +0x180
runtime.handoffp(0x10913400, 0x1)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1077 +0x2e0
runtime.stoplockedm()
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1133 +0xe0
runtime.schedule()
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1417 +0xc0
runtime.goschedImpl(0x109ba000, 0x8b9)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1530 +0x180
runtime.gosched_m(0x109ba000, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1538 +0x60
runtime.mcall(0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:162 +0x80

goroutine 33 [runnable, locked to thread]:
runtime.Gosched()
/tmp/buildlet-scatch909750053/go/src/runtime/proc.go:135 +0x20
fp=0x109c2fb8 sp=0x109c2fa8
runtime/pprof_test.TestTraceStress.func4(0x1099c580, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:136 +0xa0
fp=0x109c2fd8 sp=0x109c2fb8
runtime.goexit()
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:1086 +0x1
fp=0x109c2fe0 sp=0x109c2fd8
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:139 +0x4e0

goroutine 1 [chan receive]:
testing.RunTests(0x2a9a24, 0x6b1460, 0x8, 0x8, 0x1, 0x0)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:561 +0xba0
testing.(*M).Run(0x1093a120, 0x6cb700, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:490 +0x100
main.main()
/tmp/go-build587579621/runtime/pprof/_test/_testmain.go:70 +0x200

goroutine 15 [runnable]:
runtime/pprof_test.TestTraceStress(0x10958900, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:144 +0x540
testing.tRunner(0x10958900, 0x6b149c)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:452 +0x120
created by testing.RunTests
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:560 +0xb60

goroutine 16 [chan receive]:
runtime/pprof_test.TestTraceStress.func1(0x1099c580, 0x1090bbc0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:99 +0x60
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:101 +0xe0

goroutine 17 [semacquire]:
sync.runtime_Syncsemacquire(0x10958970, 0x1)
/tmp/buildlet-scatch909750053/go/src/runtime/sema.go:237 +0x320
sync.(_Cond).Wait(0x10958968, 0x10958960)
/tmp/buildlet-scatch909750053/go/src/sync/cond.go:62 +0x100
syscall.(_queue).waitRead(0x10958960, 0x1, 0x0, 0x0, 0x6b65e0, 0x0, 0x0,
0x8b9)
/tmp/buildlet-scatch909750053/go/src/syscall/net_nacl.go:263 +0x180
syscall.(_byteq).read(0x10958960, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/net_nacl.go:328 +0xe0
syscall.(_pipeFile).read(0x1091c4e8, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0,
0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/fd_nacl.go:303 +0x100
syscall.Read(0x3, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/fd_nacl.go:162 +0xe0
os.(_File).read(0x1091c4f8, 0x109a8a20, 0x1, 0x1, 0x32460, 0x0, 0x0,
0x1fc260)
/tmp/buildlet-scatch909750053/go/src/os/file_unix.go:203 +0x80
os.(_File).Read(0x1091c4f8, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/os/file.go:95 +0xa0
runtime/pprof_test.TestTraceStress.func3(0x1091c4f8, 0x1099c580,
0x1090bbc0, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:115 +0x80
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:118 +0x2e0

goroutine 18 [trace reader (blocked)]:
runtime.ReadTrace(0x0, 0x0, 0x0, 0x8)
/tmp/buildlet-scatch909750053/go/src/runtime/trace.go:313 +0x320
runtime/pprof.StartTrace.func1(0xfeed09a8, 0x109589c0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/pprof.go:629 +0x40
created by runtime/pprof.StartTrace
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/pprof.go:635 +0xa0
FAIL runtime/pprof 0.258s

It seems nacl's newosproc should be labeled nowritebarrier?

@aclements
Copy link
Member

Fixing the write barriers in os1_nacl.go's newosproc should fix this
specific failure, but I'm more generally concerned that it's possible to
start a new M while the world is stopped. This is walking on thin ice.

On Mon, Mar 23, 2015 at 10:58 PM, Minux Ma notifications@github.com wrote:

I just saw that i also failed on a previous commit on the nacl-amd64p32
builder:

http://build.golang.org/log/6bc2419376e65f381076f15802ca1fe10e9098d4
(it was on commit 08af4c3, but that is
probably irrelevant for this issue.)

It has a better stack trace with no elided frames, but it might be caused
by
a separate issue:
fatal error: writebarrierptr_nostore1 called with mp.p == nil

runtime stack:
runtime.throw(0x28e428, 0x30)
/tmp/buildlet-scatch909750053/go/src/runtime/panic.go:543 +0x120
runtime.writebarrierptr_nostore1.func1()
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:108 +0x160
runtime.systemstack(0x109a5e80)
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:231 +0x100
runtime.writebarrierptr_nostore1(0x1091ea34, 0x109ba280)
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:112 +0x80
runtime.writebarrierptr(0x1091ea34, 0x109ba280)
/tmp/buildlet-scatch909750053/go/src/runtime/mbarrier.go:135 +0xc0
runtime.newosproc(0x1091ea00, 0x1098c000)
/tmp/buildlet-scatch909750053/go/src/runtime/os1_nacl.go:75 +0x60
runtime.newm(0x0, 0x10913400)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:995 +0x1a0
runtime.startm(0x10913400, 0x10913d00)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1058 +0x180
runtime.handoffp(0x10913400, 0x1)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1077 +0x2e0
runtime.stoplockedm()
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1133 +0xe0
runtime.schedule()
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1417 +0xc0
runtime.goschedImpl(0x109ba000, 0x8b9)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1530 +0x180
runtime.gosched_m(0x109ba000, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/proc1.go:1538 +0x60
runtime.mcall(0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:162 +0x80

goroutine 33 [runnable, locked to thread]:
runtime.Gosched()
/tmp/buildlet-scatch909750053/go/src/runtime/proc.go:135 +0x20
fp=0x109c2fb8 sp=0x109c2fa8
runtime/pprof_test.TestTraceStress.func4(0x1099c580, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:136 +0xa0
fp=0x109c2fd8 sp=0x109c2fb8
runtime.goexit()
/tmp/buildlet-scatch909750053/go/src/runtime/asm_amd64p32.s:1086 +0x1
fp=0x109c2fe0 sp=0x109c2fd8
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:139 +0x4e0

goroutine 1 [chan receive]:
testing.RunTests(0x2a9a24, 0x6b1460, 0x8, 0x8, 0x1, 0x0)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:561 +0xba0
testing.(*M).Run(0x1093a120, 0x6cb700, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:490 +0x100
main.main()
/tmp/go-build587579621/runtime/pprof/_test/_testmain.go:70 +0x200

goroutine 15 [runnable]:
runtime/pprof_test.TestTraceStress(0x10958900, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:144 +0x540
testing.tRunner(0x10958900, 0x6b149c)
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:452 +0x120
created by testing.RunTests
/tmp/buildlet-scatch909750053/go/src/testing/testing.go:560 +0xb60

goroutine 16 [chan receive]:
runtime/pprof_test.TestTraceStress.func1(0x1099c580, 0x1090bbc0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:99 +0x60
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:101 +0xe0

goroutine 17 [semacquire]:
sync.runtime_Syncsemacquire(0x10958970, 0x1)
/tmp/buildlet-scatch909750053/go/src/runtime/sema.go:237 +0x320
sync.(_Cond).Wait(0x10958968, 0x10958960)
/tmp/buildlet-scatch909750053/go/src/sync/cond.go:62 +0x100
syscall.(_queue).waitRead(0x10958960, 0x1, 0x0, 0x0, 0x6b65e0, 0x0, 0x0,
0x8b9)
/tmp/buildlet-scatch909750053/go/src/syscall/net_nacl.go:263 +0x180
syscall.(_byteq).read(0x10958960, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0,
0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/net_nacl.go:328 +0xe0
syscall.(_pipeFile).read(0x1091c4e8, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0,
0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/fd_nacl.go:303 +0x100
syscall.Read(0x3, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/syscall/fd_nacl.go:162 +0xe0
os.(_File).read(0x1091c4f8, 0x109a8a20, 0x1, 0x1, 0x32460, 0x0, 0x0,
0x1fc260)
/tmp/buildlet-scatch909750053/go/src/os/file_unix.go:203 +0x80
os.(_File).Read(0x1091c4f8, 0x109a8a20, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0)
/tmp/buildlet-scatch909750053/go/src/os/file.go:95 +0xa0
runtime/pprof_test.TestTraceStress.func3(0x1091c4f8, 0x1099c580,
0x1090bbc0, 0x0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:115 +0x80
created by runtime/pprof_test.TestTraceStress
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/trace_test.go:118 +0x2e0

goroutine 18 [trace reader (blocked)]:
runtime.ReadTrace(0x0, 0x0, 0x0, 0x8)
/tmp/buildlet-scatch909750053/go/src/runtime/trace.go:313 +0x320
runtime/pprof.StartTrace.func1(0xfeed09a8, 0x109589c0)
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/pprof.go:629 +0x40
created by runtime/pprof.StartTrace
/tmp/buildlet-scatch909750053/go/src/runtime/pprof/pprof.go:635 +0xa0
FAIL runtime/pprof 0.258s

It seems nacl's newosproc should be labeled nowritebarrier?


Reply to this email directly or view it on GitHub
#10223 (comment).

@aclements
Copy link
Member

Fixed by 546a54b

@minux, the nacl issue is separate. Would you mind opening a new issue for it?

@minux
Copy link
Member

minux commented Mar 24, 2015 via email

@golang golang locked and limited conversation to collaborators Jun 25, 2016
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants