1
0
mirror of https://github.com/golang/go synced 2024-10-05 21:21:21 -06:00
go/src/runtime
Austin Clements 7387121ddb runtime: account for stack guard when shrinking the stack
Currently, when shrinkstack computes whether the halved stack
allocation will have enough room for the stack, it accounts for the
stack space that's actively in use but fails to leave extra room for
the stack guard space. As a result, *if* the minimum stack size is
small enough or the guard large enough, it may shrink the stack and
leave less than enough room to run nosplit functions. If the next
function called after the stack shrink is a nosplit function, it may
overflow the stack without noticing and overwrite non-stack memory.

We don't think this is happening under normal conditions right now.
The minimum stack allocation is 2K and the guard is 640 bytes. The
"worst case" stack shrink is from 4K (4048 bytes after stack barrier
array reservation) to 2K (2016 bytes after stack barrier array
reservation), which means the largest "used" size that will qualify
for shrinking is 4048/4 - 8 = 1004 bytes. After copying, that leaves
2016 - 1004 = 1012 bytes of available stack, which is significantly
more than the guard space.

If we were to reduce the minimum stack size to 1K or raise the guard
space above 1012 bytes, the logic in shrinkstack would no longer leave
enough space.

It's also possible to trigger this problem by setting
firstStackBarrierOffset to 0, which puts stack barriers in a debug
mode that steals away *half* of the stack for the stack barrier array
reservation. Then, the largest "used" size that qualifies for
shrinking is (4096/2)/4 - 8 = 504 bytes. After copying, that leaves
(2096/2) - 504 = 8 bytes of available stack; much less than the
required guard space. This causes failures like those in issue #11027
because func gc() shrinks its own stack and then immediately calls
casgstatus (a nosplit function), which overflows the stack and
overwrites a free list pointer in the neighboring span. However, since
this seems to require the special debug mode, we don't think it's
responsible for issue #11027.

To forestall all of these subtle issues, this commit modifies
shrinkstack to correctly account for the guard space when considering
whether to halve the stack allocation.

Change-Id: I7312584addc63b5bfe55cc384a1012f6181f1b9d
Reviewed-on: https://go-review.googlesource.com/10714
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
2015-06-16 21:17:53 +00:00
..
cgo runtime/cgo: add cgo support for solaris/amd64 2015-05-06 11:37:28 +00:00
debug runtime/debug: disable arm64 test for issue 9993 2015-04-13 11:57:12 +00:00
pprof all: extract "can I exec?" check from tests into internal/testenv 2015-06-16 18:07:36 +00:00
race all: fix misprints in comments 2015-06-11 14:18:57 +00:00
alg.go reflect: implement ArrayOf 2015-04-21 15:21:09 +00:00
append_test.go
arch1_386.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_amd64.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_amd64p32.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_arm64.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_arm.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_ppc64.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch1_ppc64le.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
arch_386.go
arch_amd64.go
arch_amd64p32.go
arch_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
arch_arm.go
arch_ppc64.go all: power64 is now ppc64 2014-12-05 19:13:20 -05:00
arch_ppc64le.go all: power64 is now ppc64 2014-12-05 19:13:20 -05:00
asm_386.s runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
asm_amd64.s runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
asm_amd64p32.s runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
asm_arm64.s runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
asm_arm.s runtime, cmd/internal/obj/arm: improve arm function prologue 2015-06-04 16:35:12 +00:00
asm_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
asm.s [dev.cc] runtime: convert assembly files for C to Go transition 2014-11-11 17:06:22 -05:00
atomic_386.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
atomic_amd64x.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
atomic_arm64.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
atomic_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
atomic_arm.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
atomic_pointer.go runtime: remove wbshadow mode 2015-05-11 14:55:11 +00:00
atomic_ppc64x.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
atomic_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
atomic_test.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
cgo.go cmd/cgo: make sure pointers passed to C escape to heap 2015-06-15 17:39:53 +00:00
cgocall.go runtime: delete cgo_allocate 2015-04-17 01:30:47 +00:00
cgocallback.go runtime: delete cgo_allocate 2015-04-17 01:30:47 +00:00
chan_test.go runtime: fix data race in BenchmarkChanPopular 2015-06-02 11:16:01 +00:00
chan.go runtime: use type-based write barrier for remote stack write during chansend 2015-06-15 16:50:30 +00:00
closure_test.go
compiler.go all: don't refer to code.google.com/p/go{,-wiki}/ 2015-02-06 14:41:47 +00:00
complex_test.go
complex.go [dev.cc] runtime: convert basic library routines from C to Go 2014-11-11 17:07:06 -05:00
cpuprof.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
cputicks.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
crash_cgo_test.go runtime: skip fork test on darwin/arm64 2015-04-13 11:52:05 +00:00
crash_test.go all: extract "can I exec?" check from tests into internal/testenv 2015-06-16 18:07:36 +00:00
debug.go runtime: factor stoptheworld/starttheworld pattern 2015-05-18 14:55:25 +00:00
defs1_linux.go
defs1_netbsd_386.go [dev.cc] runtime: convert netbsd/386 port to Go 2014-11-22 22:09:11 +11:00
defs1_netbsd_amd64.go [dev.cc] runtime: convert netbsd/amd64 port to Go 2014-11-22 16:05:31 +11:00
defs1_netbsd_arm.go runtime: convert netbsd/arm to Go 2014-12-05 16:17:09 -05:00
defs1_solaris_amd64.go [dev.cc] runtime: convert Solaris port to Go 2014-11-13 16:07:10 +01:00
defs2_linux.go
defs3_linux.go all: power64 is now ppc64 2014-12-05 19:13:20 -05:00
defs_arm_linux.go
defs_darwin_386.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin_amd64.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
defs_darwin_arm.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
defs_darwin.go
defs_dragonfly_amd64.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_dragonfly.go all: remove dragonfly/386 port 2015-03-14 10:47:19 +00:00
defs_freebsd_386.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_freebsd_amd64.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_freebsd_arm.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_freebsd.go
defs_linux_386.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_amd64.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
defs_linux_arm.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_ppc64.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux_ppc64le.go runtime: mark pages we return to kernel as NOHUGEPAGE 2015-02-25 21:16:18 +00:00
defs_linux.go
defs_nacl_386.go runtime: log all thread stack traces during GODEBUG=crash on Linux and OS X 2015-01-14 18:33:38 +00:00
defs_nacl_amd64p32.go runtime: log all thread stack traces during GODEBUG=crash on Linux and OS X 2015-01-14 18:33:38 +00:00
defs_nacl_arm.go runtime: log all thread stack traces during GODEBUG=crash on Linux and OS X 2015-01-14 18:33:38 +00:00
defs_netbsd_386.go
defs_netbsd_amd64.go
defs_netbsd_arm.go
defs_netbsd.go
defs_openbsd_386.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_openbsd_amd64.go [dev.cc] runtime: change set_sec to take int64 2014-11-14 14:50:00 -05:00
defs_openbsd_arm.go runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
defs_openbsd.go
defs_plan9_386.go runtime: consolidate arch-specific signal handlers on Plan 9 2014-12-30 14:36:15 +00:00
defs_plan9_amd64.go runtime: consolidate arch-specific signal handlers on Plan 9 2014-12-30 14:36:15 +00:00
defs_solaris_amd64.go
defs_solaris.go
defs_windows_386.go runtime: use (*context) ip, setip, sp and setsp everywhere on windows 2015-04-09 00:57:28 +00:00
defs_windows_amd64.go runtime: use (*context) ip, setip, sp and setsp everywhere on windows 2015-04-09 00:57:28 +00:00
defs_windows.go runtime: log all thread stack traces during GODEBUG=crash on Linux and OS X 2015-01-14 18:33:38 +00:00
duff_386.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_amd64.s cmd/6g, runtime: improve duffzero throughput 2015-04-15 19:17:07 +00:00
duff_arm64.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_arm.s runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
duff_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
env_plan9.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
env_posix.go runtime: remove unused getenv function 2015-03-02 19:19:25 +00:00
env_test.go runtime: fix TestFixedGOROOT to properly restore the GOROOT env var after test 2015-06-03 23:33:48 +00:00
error.go cmd/internal/gc: inline x := y.(*T) and x, ok := y.(*T) 2015-03-20 20:05:37 +00:00
export_futex_test.go
export_linux_test.go runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
export_test.go runtime: test and fix heap bitmap for 1-pointer allocation on 32-bit system 2015-05-15 18:47:00 +00:00
export_windows_test.go runtime: do not display Windows Error Reporting dialogue 2015-01-06 05:31:40 +00:00
extern.go runtime: add GODEBUG gcshrinkstackoff, gcstackbarrieroff, and gcstoptheworld variables 2015-06-15 17:31:04 +00:00
funcdata.h [dev.cc] runtime: convert header files to Go 2014-11-11 17:05:19 -05:00
futex_test.go [dev.cc] runtime: convert scheduler from C to Go 2014-11-11 17:08:33 -05:00
gc_test.go runtime: add Node128, Node130 benchmarks 2015-05-14 20:21:34 +00:00
gcinfo_test.go runtime: test and fix heap bitmap for 1-pointer allocation on 32-bit system 2015-05-15 18:47:00 +00:00
gengoos.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
go_tls.h [dev.cc] cmd/dist: adjust for build process without cmd/cc 2014-11-11 01:29:05 -05:00
hash32.go runtime: remove size argument from hash and equal algorithms 2015-01-07 21:57:01 +00:00
hash64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
hash_test.go runtime: a better fallback hash 2014-12-22 22:41:01 +00:00
hashmap_fast.go runtime: remove size argument from hash and equal algorithms 2015-01-07 21:57:01 +00:00
hashmap.go runtime: make mapzero not crash on arm 2015-05-15 20:14:41 +00:00
heapdump.go runtime: disallow preemption during startTheWorld 2015-05-18 14:55:31 +00:00
iface_test.go cmd/gc: allocate backing storage for non-escaping interfaces on stack 2015-03-30 16:11:22 +00:00
iface.go reflect, runtime: check equality, not identity, for method names 2015-04-11 17:35:44 +00:00
lfstack_32bit.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
lfstack_amd64.go [dev.cc] runtime: fix lfstack for amd64 addresses in top half of addr space 2014-11-14 12:55:23 -05:00
lfstack_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
lfstack_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
lfstack_linux_ppc64x.go all: power64 is now ppc64 2014-12-05 19:13:20 -05:00
lfstack_test.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
lfstack.go runtime: rename gothrow to throw 2014-12-28 06:16:16 +00:00
lock_futex.go runtime: rename m.gcing to m.preemptoff and make it a string 2015-02-02 19:34:51 +00:00
lock_sema.go runtime: fix writebarrier throw in lock_sema 2015-03-17 19:20:11 +00:00
Makefile
malloc_test.go cmd/gc: don't copy []byte during string concatenation 2015-01-27 18:15:42 +00:00
malloc.go runtime: raise maxmem to 512 GB 2015-06-15 18:31:25 +00:00
map_test.go cmd/gc: fix noscan maps 2015-02-15 08:52:14 +00:00
mapspeed_test.go cmd/gc: don't call memequal twice in generated type.eq routines 2015-02-26 00:34:29 +00:00
mbarrier.go runtime: fix write-barrier-enabled phase list in gcmarkwb_m 2015-06-08 05:13:15 +00:00
mbitmap.go runtime: use type-based write barrier for remote stack write during chansend 2015-06-15 16:50:30 +00:00
mcache.go runtime: track "scannable" bytes of heap 2015-05-06 19:40:33 +00:00
mcentral.go runtime: finish sweeping before concurrent GC starts 2015-04-21 15:35:46 +00:00
mem_bsd.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_darwin.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_linux.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_plan9.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
mem_windows.go runtime: implement xadduintptr and update system mstats using it 2015-04-24 16:53:26 +00:00
memclr_386.s [dev.power64] cmd/5a, cmd/6a, cmd/8a, cmd/9a: make labels function-scoped 2014-10-28 21:50:16 -04:00
memclr_amd64.s [dev.power64] cmd/5a, cmd/6a, cmd/8a, cmd/9a: make labels function-scoped 2014-10-28 21:50:16 -04:00
memclr_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
memclr_arm.s [dev.cc] all: edit assembly source for ARM to be more regular 2015-02-13 23:08:51 +00:00
memclr_plan9_386.s [dev.power64] cmd/5a, cmd/6a, cmd/8a, cmd/9a: make labels function-scoped 2014-10-28 21:50:16 -04:00
memclr_plan9_amd64.s
memclr_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
memmove_386.s
memmove_amd64.s
memmove_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
memmove_arm.s [dev.cc] all: edit assembly source for ARM to be more regular 2015-02-13 23:08:51 +00:00
memmove_linux_amd64_test.go
memmove_nacl_amd64p32.s
memmove_plan9_386.s
memmove_plan9_amd64.s
memmove_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
memmove_test.go cmd/6g, runtime: improve duffzero throughput 2015-04-15 19:17:07 +00:00
mfinal_test.go
mfinal.go cmd/internal/gc, runtime: use 1-bit bitmap for stack frames, data, bss 2015-05-01 18:44:36 +00:00
mfixalloc.go runtime,reflect,cmd/internal/gc: Fix comments referring to .c/.h files 2015-03-11 20:19:43 +00:00
mgc.go runtime: add GODEBUG gcshrinkstackoff, gcstackbarrieroff, and gcstoptheworld variables 2015-06-15 17:31:04 +00:00
mgcmark.go runtime: add GODEBUG gcshrinkstackoff, gcstackbarrieroff, and gcstoptheworld variables 2015-06-15 17:31:04 +00:00
mgcsweep.go runtime: detect and print corrupted free lists 2015-06-16 21:17:47 +00:00
mgcwork.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
mheap.go runtime: wait to update arena_used until after mapping bitmap 2015-06-11 18:15:21 +00:00
mkduff.go cmd/internal/gc, cmd/[56789]g: rename stackcopy to blockcopy 2015-04-29 00:28:01 +00:00
mknacl.sh
mprof.go runtime: factor stoptheworld/starttheworld pattern 2015-05-18 14:55:25 +00:00
msize.go runtime: Speed up heapBitsForObject 2015-04-20 21:39:06 +00:00
mstats.go runtime: disallow preemption during startTheWorld 2015-05-18 14:55:31 +00:00
netpoll_epoll.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
netpoll_kqueue.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
netpoll_nacl.go
netpoll_solaris.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
netpoll_stub.go runtime: define netpollinited on Plan 9 2015-01-14 22:04:56 +00:00
netpoll_windows.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
netpoll.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
noasm.go runtime: add arm64 runtime.cmpstring and bytes.Compare 2015-04-09 14:49:31 +00:00
norace_linux_test.go runtime: re-enable TestNewProc0 on android/arm and fix heap corruption 2015-04-29 19:18:07 +00:00
norace_test.go [dev.cc] runtime: convert race implementation from C to Go 2014-11-11 17:08:14 -05:00
os1_darwin.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_dragonfly.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_freebsd.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_linux.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_nacl.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
os1_netbsd_386.go [dev.cc] runtime: convert netbsd/386 port to Go 2014-11-22 22:09:11 +11:00
os1_netbsd_amd64.go [dev.cc] runtime: convert netbsd/amd64 port to Go 2014-11-22 16:05:31 +11:00
os1_netbsd.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_openbsd.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os1_plan9.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
os1_windows.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
os2_darwin.go [dev.cc] runtime: convert operating system support code from C to Go 2014-11-11 17:08:54 -05:00
os2_dragonfly.go [dev.cc] runtime: convert dragonfly/amd64 port to Go 2014-11-15 04:47:20 +11:00
os2_freebsd.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
os2_linux.go [dev.cc] runtime: convert operating system support code from C to Go 2014-11-11 17:08:54 -05:00
os2_nacl.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
os2_netbsd.go [dev.cc] runtime: convert netbsd/amd64 port to Go 2014-11-22 16:05:31 +11:00
os2_openbsd.go [dev.cc] runtime: convert openbsd/amd64 port to Go 2014-11-14 13:01:12 +11:00
os2_plan9.go runtime: log all thread stack traces during GODEBUG=crash on Linux and OS X 2015-01-14 18:33:38 +00:00
os2_solaris.go [dev.cc] runtime: convert Solaris port to Go 2014-11-13 16:07:10 +01:00
os2_windows.go runtime: do not calculate asmstdcall address every time we make syscall 2015-04-09 04:26:44 +00:00
os3_plan9.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
os3_solaris.go runtime: clean up signalstack API 2015-06-02 19:57:42 +00:00
os_android_arm.go runtime: export main.main for android 2015-04-17 12:11:04 +00:00
os_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
os_darwin_arm.go runtime: darwin/arm support 2015-02-06 05:48:56 +00:00
os_darwin.go runtime: fix arm64 asm vet issues 2015-04-22 02:30:11 +00:00
os_dragonfly.go runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
os_freebsd_arm.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
os_freebsd.go runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
os_linux_386.go runtime: clean up & go-ify the hash function seeder 2014-12-10 21:15:35 +00:00
os_linux_arm64.go runtime: mark all runtime.cputicks implementations NOSPLIT 2015-04-15 09:22:15 +00:00
os_linux_arm.go runtime: mark all runtime.cputicks implementations NOSPLIT 2015-04-15 09:22:15 +00:00
os_linux.go runtime: signal forwarding 2015-04-24 05:19:39 +00:00
os_nacl_arm.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
os_nacl.go runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
os_netbsd_arm.go runtime: convert netbsd/arm to Go 2014-12-05 16:17:09 -05:00
os_netbsd.go runtime: remove unnecessary noescape to fix netbsd 2015-04-27 23:04:38 +00:00
os_openbsd_arm.go runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
os_openbsd.go runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
os_plan9.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
os_solaris.go runtime: always load address of libcFunc on Solaris 2015-05-06 11:36:57 +00:00
os_windows.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
panic1.go runtime: unwind stack barriers when writing above the current frame 2015-06-07 17:57:47 +00:00
panic.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
parfor_test.go runtime: eliminate parfor ctx field 2015-01-29 17:38:16 +00:00
parfor.go runtime: use func value for parfor body 2015-01-29 17:38:32 +00:00
print1_write_android.go [dev.cc] runtime: print to stderr as well as android logd 2015-02-20 18:30:09 +00:00
print1_write.go runtime: add missing copyright notices 2015-01-09 20:06:33 +00:00
print1.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
proc1.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
proc_test.go runtime: disable GC around TestGoroutineParallelism 2015-05-28 17:40:19 +00:00
proc.go runtime: factor stoptheworld/starttheworld pattern 2015-05-18 14:55:25 +00:00
race0.go runtime: rename gothrow to throw 2014-12-28 06:16:16 +00:00
race1.go runtime, cmd/internal/ld: rename themoduledata to firstmoduledata 2015-04-10 05:11:49 +00:00
race_amd64.s runtime: adjust program counters in race detector 2015-02-20 18:04:16 +00:00
race.go runtime: adjust program counters in race detector 2015-02-20 18:04:16 +00:00
rdebug.go [dev.cc] runtime: convert scheduler from C to Go 2014-11-11 17:08:33 -05:00
rt0_android_arm.s runtime: shared library init support for android/arm. 2015-04-13 21:53:15 +00:00
rt0_darwin_386.s
rt0_darwin_amd64.s runtime: darwin/amd64 library entry point 2015-04-08 21:53:52 +00:00
rt0_darwin_arm64.s runtime: darwin/arm64 c-archive entry point 2015-04-16 18:56:54 +00:00
rt0_darwin_arm.s runtime: library entry point for darwin/arm 2015-04-12 12:49:49 +00:00
rt0_dragonfly_amd64.s
rt0_freebsd_386.s
rt0_freebsd_amd64.s
rt0_freebsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_linux_386.s runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
rt0_linux_amd64.s runtime: deflake TestNewOSProc0, fix _rt0_amd64_linux_lib stack alignment 2015-04-23 23:09:03 +00:00
rt0_linux_arm64.s runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
rt0_linux_arm.s runtime: merge clone0 and clone 2015-04-22 16:28:57 +00:00
rt0_linux_ppc64.s cmd/cgo, runtime/cgo: support ppc64 2015-01-07 20:36:27 +00:00
rt0_linux_ppc64le.s cmd/cgo, runtime/cgo: support ppc64 2015-01-07 20:36:27 +00:00
rt0_nacl_386.s
rt0_nacl_amd64p32.s runtime: disable fake time on nacl 2014-10-27 20:47:15 -04:00
rt0_nacl_arm.s
rt0_netbsd_386.s
rt0_netbsd_amd64.s
rt0_netbsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_openbsd_386.s
rt0_openbsd_amd64.s
rt0_openbsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_plan9_386.s
rt0_plan9_amd64.s
rt0_solaris_amd64.s
rt0_windows_386.s runtime: use _main instead of main on windows/386 2015-03-24 03:23:03 +00:00
rt0_windows_amd64.s [dev.cc] runtime: convert assembly files for C to Go transition 2014-11-11 17:06:22 -05:00
rune.go runtime,reflect,cmd/internal/gc: Fix comments referring to .c/.h files 2015-03-11 20:19:43 +00:00
runtime1.go runtime: add GODEBUG gcshrinkstackoff, gcstackbarrieroff, and gcstoptheworld variables 2015-06-15 17:31:04 +00:00
runtime2.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
runtime_linux_test.go
runtime_test.go runtime: enable profiling on g0 2015-05-11 08:44:30 +00:00
runtime_unix_test.go runtime: multi-threaded, utilization-scheduled background mark 2015-04-21 15:35:32 +00:00
runtime-gdb_test.go runtime: use stripped test environment for TestGdbPython 2015-05-28 17:39:08 +00:00
runtime-gdb.py runtime: Fix GDB integration with Python 2 2015-04-10 22:17:59 +00:00
runtime.go runtime: auto-generate duff routines 2015-04-02 02:37:59 +00:00
select.go runtime: remove a modulus calculation from pollorder 2015-04-27 19:36:37 +00:00
sema.go runtime: remove runtime frames from stacks in traces 2015-03-10 14:46:15 +00:00
signal1_unix.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_386.go runtime: implement GOTRACEBACK=crash for linux/386 2015-06-16 20:47:47 +00:00
signal_amd64x.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
signal_arm64.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
signal_arm.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
signal_darwin_386.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin_amd64.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin_arm64.go runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
signal_darwin_arm.go runtime: use uintXX instead of *byte for si_addr on Darwin 2015-03-26 16:20:32 +00:00
signal_darwin.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_dragonfly_amd64.go [dev.cc] runtime: convert dragonfly/amd64 port to Go 2014-11-15 04:47:20 +11:00
signal_dragonfly.go [dev.cc] runtime: convert dragonfly/amd64 port to Go 2014-11-15 04:47:20 +11:00
signal_freebsd_386.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
signal_freebsd_amd64.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
signal_freebsd_arm.go [dev.cc] runtime: convert freebsd to Go 2014-11-11 23:00:29 -05:00
signal_freebsd.go [dev.cc] runtime: make SIGSYS notifiable on freebsd (again) 2014-11-14 04:29:03 +11:00
signal_linux_386.go [dev.cc] runtime: add explicit siginfo.si_addr field 2014-11-19 14:56:49 -05:00
signal_linux_amd64.go [dev.cc] runtime: add explicit siginfo.si_addr field 2014-11-19 14:56:49 -05:00
signal_linux_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
signal_linux_arm.go [dev.cc] runtime: add explicit siginfo.si_addr field 2014-11-19 14:56:49 -05:00
signal_linux_ppc64x.go all: power64 is now ppc64 2014-12-05 19:13:20 -05:00
signal_linux.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_nacl_386.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
signal_nacl_amd64p32.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
signal_nacl_arm.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
signal_nacl.go [dev.cc] runtime: convert nacl support to Go 2014-11-21 10:22:18 -05:00
signal_netbsd_386.go [dev.cc] runtime: convert netbsd/386 port to Go 2014-11-22 22:09:11 +11:00
signal_netbsd_amd64.go [dev.cc] runtime: convert netbsd/amd64 port to Go 2014-11-22 16:05:31 +11:00
signal_netbsd_arm.go runtime: convert netbsd/arm to Go 2014-12-05 16:17:09 -05:00
signal_netbsd.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_openbsd_386.go [dev.cc] runtime: convert openbsd/386 port to Go 2014-11-15 03:55:14 +11:00
signal_openbsd_amd64.go [dev.cc] runtime: convert openbsd/amd64 port to Go 2014-11-14 13:01:12 +11:00
signal_openbsd_arm.go runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
signal_openbsd.go [dev.cc] runtime: convert openbsd/amd64 port to Go 2014-11-14 13:01:12 +11:00
signal_plan9.go runtime: remove C-style strcmp and strncmp helpers 2015-02-16 04:07:19 +00:00
signal_ppc64x.go runtime: replace func-based write barrier skipping with type-based 2015-04-20 20:20:09 +00:00
signal_solaris_amd64.go [dev.cc] runtime: fix nil pointer crash handler bug on Solaris 2014-11-14 14:25:49 +01:00
signal_solaris.go runtime: don't always unblock all signals 2015-05-22 20:24:08 +00:00
signal_unix.go runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
signal_windows.go runtime: correct exception stack trace output 2015-05-18 03:09:45 +00:00
sigpanic_unix.go runtime/cgo: catch EXC_BAD_ACCESS on darwin/arm 2015-03-17 12:12:48 +00:00
sigqueue_plan9.go runtime: fix signal handling on Plan 9 2015-05-12 16:35:46 +00:00
sigqueue.go runtime: initialize extra M for cgo during mstart 2015-03-24 19:39:46 +00:00
slice.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
softfloat64_test.go [dev.cc] runtime: convert softfloat_arm.c to Go + build fixes 2014-11-11 22:30:02 -05:00
softfloat64.go [dev.cc] runtime: convert softfloat_arm.c to Go + build fixes 2014-11-11 22:30:02 -05:00
softfloat_arm.go runtime: fix software FP regs corruption when emulating SQRT on ARM 2015-05-05 07:32:58 +00:00
sqrt_test.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
sqrt.go runtime: fix software FP regs corruption when emulating SQRT on ARM 2015-05-05 07:32:58 +00:00
stack1.go runtime: account for stack guard when shrinking the stack 2015-06-16 21:17:53 +00:00
stack2.go cmd/dist, runtime: Make stack guard larger for non-optimized builds 2015-05-01 15:41:55 +00:00
stack_test.go runtime: add blank assignment to defeat "declared but not used" error from go/types 2015-06-05 18:05:16 +00:00
string1.go cmd/internal/gc: improve flow of input params to output params 2015-05-01 13:47:20 +00:00
string_test.go cmd/gc: don't copy string in range []byte(str) 2015-02-04 04:37:21 +00:00
string.go runtime: merge slice and sliceStruct 2015-04-15 16:59:49 +00:00
stubs2.go runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
stubs_android.go runtime: support panic/print logging in android-L. 2015-02-04 21:02:41 +00:00
stubs.go runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
symtab_test.go
symtab.go runtime: replace GC programs with simpler encoding, faster decoder 2015-05-16 00:38:17 +00:00
sys_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
sys_arm.go runtime, cmd/internal/obj/arm: improve arm function prologue 2015-06-04 16:35:12 +00:00
sys_darwin_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_darwin_amd64.s runtime: signal forwarding for darwin/amd64 2015-04-26 13:46:13 +00:00
sys_darwin_arm64.s runtime: fix arm64 asm vet issues 2015-04-22 02:30:11 +00:00
sys_darwin_arm.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_dragonfly_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_freebsd_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_freebsd_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_freebsd_arm.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_linux_386.s runtime: signal forwarding 2015-04-24 05:19:39 +00:00
sys_linux_amd64.s runtime: signal forwarding 2015-04-24 05:19:39 +00:00
sys_linux_arm64.s runtime: signal forwarding 2015-04-24 05:19:39 +00:00
sys_linux_arm.s runtime: re-enable TestNewProc0 on android/arm and fix heap corruption 2015-04-29 19:18:07 +00:00
sys_linux_ppc64x.s all: use RET instead of RETURN on ppc64 2015-06-06 00:07:23 +00:00
sys_nacl_386.s all: fix misprints in comments 2015-06-11 14:18:57 +00:00
sys_nacl_amd64p32.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_nacl_arm.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_netbsd_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_netbsd_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_netbsd_arm.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_openbsd_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_openbsd_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_openbsd_arm.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_plan9_386.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_plan9_amd64.s runtime: rename close to closefd 2015-04-14 12:31:29 +00:00
sys_ppc64x.go runtime: rename gothrow to throw 2014-12-28 06:16:16 +00:00
sys_solaris_amd64.s runtime: always load address of libcFunc on Solaris 2015-05-06 11:36:57 +00:00
sys_windows_386.s runtime: really pass return value to Windows in externalthreadhandler 2015-04-15 05:03:42 +00:00
sys_windows_amd64.s runtime: really pass return value to Windows in externalthreadhandler 2015-04-15 05:03:42 +00:00
sys_x86.go runtime: rename gothrow to throw 2014-12-28 06:16:16 +00:00
syscall2_solaris.go runtime, syscall: fix Solaris exec tests 2015-03-24 19:51:21 +00:00
syscall_nacl.h runtime, syscall: use the new get_random_bytes syscall for NaCl 2015-03-25 02:07:09 +00:00
syscall_solaris.go runtime, syscall: link Solaris binaries directly instead of using dlopen/dlsym 2015-05-06 11:38:50 +00:00
syscall_windows_test.go runtime: skip TestStdcallAndCDeclCallbacks when gcc is missing 2015-03-15 00:37:05 +00:00
syscall_windows.go runtime: do not calculate asmstdcall address every time we make syscall 2015-04-09 04:26:44 +00:00
textflag.h cmd/5l etc: replace C code with Go code 2015-03-01 00:40:11 +00:00
time.go runtime: remove runtime frames from stacks in traces 2015-03-10 14:46:15 +00:00
tls_arm64.h runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
tls_arm64.s runtime: darwin/arm64 support 2015-04-16 13:01:19 +00:00
tls_arm.s liblink, runtime: move all references to runtime.tlsg to tls_arm.s 2015-02-09 22:14:06 +00:00
tls_ppc64x.s cmd/cgo, runtime/cgo: support ppc64 2015-01-07 20:36:27 +00:00
trace.go runtime: factor stoptheworld/starttheworld pattern 2015-05-18 14:55:25 +00:00
traceback.go runtime: implement GC stack barriers 2015-06-02 20:00:57 +00:00
type.go runtime: replace GC programs with simpler encoding, faster decoder 2015-05-16 00:38:17 +00:00
typekind1.go [dev.cc] runtime: convert header files to Go 2014-11-11 17:05:19 -05:00
typekind.go
unaligned1.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
unaligned2.go runtime: a better fallback hash 2014-12-22 22:41:01 +00:00
vdso_linux_amd64.go runtime: clean up & go-ify the hash function seeder 2014-12-10 21:15:35 +00:00
vdso_none.go runtime: use runtime.sysargs to parse auxv on linux/arm 2015-01-14 05:08:06 +00:00
vlop_386.s
vlop_arm_test.go
vlop_arm.s [dev.cc] cmd/asm: make 4(SP) illegal except on 386 2015-02-18 03:41:29 +00:00
vlrt.go
wbfat_gen.go runtime: change unused argument in fat write barriers from pointer to scalar 2015-04-28 01:37:45 +00:00
wbfat.go runtime: change unused argument in fat write barriers from pointer to scalar 2015-04-28 01:37:45 +00:00
wincallback.go runtime: use go generate for zcallback_windows.go 2014-12-19 02:45:40 +00:00
zcallback_windows.go runtime: use go generate for zcallback_windows.go 2014-12-19 02:45:40 +00:00
zcallback_windows.s runtime: generate windows callback list with go generate 2014-12-05 16:24:20 -05:00
zgoarch_386.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_amd64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_amd64p32.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_arm64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_arm.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_ppc64.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoarch_ppc64le.go runtime: add support for linux/arm64 2015-03-16 18:45:54 +00:00
zgoos_android.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_darwin.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_dragonfly.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_freebsd.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_linux.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_nacl.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_netbsd.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_openbsd.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_plan9.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_solaris.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00
zgoos_windows.go [dev.cc] runtime: explicitly exclude android in zgoos_linux.go 2014-11-21 18:13:59 -05:00