1
0
mirror of https://github.com/golang/go synced 2024-11-19 13:04:45 -07:00
go/src/runtime
Austin Clements 57584a0ee1 runtime: fix false positive race in profile label reading
Because profile labels are copied from the goroutine into the tag
buffer by the signal handler, there's a carefully-crafted set of race
detector annotations to create the necessary happens-before edges
between setting a goroutine's profile label and retrieving it from the
profile tag buffer.

Given the constraints of the signal handler, we have to approximate
the true synchronization behavior. Currently, that approximation is
too weak.

Ideally, runtime_setProfLabel would perform a store-release on
&getg().labels and copying each label into the profile would perform a
load-acquire on &getg().labels. This would create the necessary
happens-before edges through each individual g.labels object.

Since we can't do this in the signal handler, we instead synchronize
on a "labelSync" global. The problem occurs with the following
sequence:

1. Goroutine 1 calls setProfLabel, which does a store-release on
   labelSync.

2. Goroutine 2 calls setProfLabel, which does a store-release on
   labelSync.

3. Goroutine 3 reads the profile, which does a load-acquire on
   labelSync.

The problem is that the load-acquire only synchronizes with the *most
recent* store-release to labelSync, and the two store-releases don't
synchronize with each other. So, once goroutine 3 touches the label
set by goroutine 1, we report a race.

The solution is to use racereleasemerge. This is like a
read-modify-write, rather than just a store-release. Each RMW of
labelSync in runtime_setProfLabel synchronizes with the previous RMW
of labelSync, and this ultimately carries forward to the load-acquire,
so it synchronizes with *all* setProfLabel operations, not just the
most recent.

Change-Id: Iab58329b156122002fff12cfe64fbeacb31c9613
Reviewed-on: https://go-review.googlesource.com/56670
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Russ Cox <rsc@golang.org>
Reviewed-by: Dmitry Vyukov <dvyukov@google.com>
2017-08-18 21:40:37 +00:00
..
cgo runtime/cgo: defeat inlining in x_cgo_yield 2017-08-16 18:49:38 +00:00
debug runtime/debug: mark TestSetGCPercent as flaky 2017-04-24 22:11:58 +00:00
internal runtime, internal/cpu: change cache line size for arm64 to 64 bytes 2017-08-08 06:49:49 +00:00
msan
pprof runtime: fix false positive race in profile label reading 2017-08-18 21:40:37 +00:00
race testing: don't fail all tests after racy test failure 2017-08-15 22:59:26 +00:00
testdata runtime: when dying from a signal use the previous signal handler 2017-08-10 10:08:17 +00:00
trace runtime/trace: better output when test fails 2017-04-14 12:21:02 +00:00
alg.go runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
append_test.go runtime: simplify memory capacity check in growslice 2017-08-15 04:23:11 +00:00
asm_386.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_amd64.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_amd64p32.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_arm64.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_arm.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_mips64x.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_mipsx.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_ppc64x.h
asm_ppc64x.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm_s390x.s runtime, cmd/compile: add intrinsic getclosureptr 2017-08-11 18:11:22 +00:00
asm.s runtime: handle inlined calls in runtime.Callers 2017-03-29 17:22:08 +00:00
atomic_arm64.s
atomic_mips64x.s runtime: added assembly part of linux/mips64{,le} support 2015-11-12 04:46:17 +00:00
atomic_mipsx.s runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
atomic_pointer.go runtime: perform write barrier before pointer write 2016-10-28 20:47:52 +00:00
atomic_ppc64x.s
callers_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
cgo_mmap.go runtime: intercept munmap as we do mmap 2017-06-06 23:26:55 +00:00
cgo_ppc64x.go
cgo_sigaction.go runtime: don't call libc sigaction function in forked child 2017-07-20 18:02:47 +00:00
cgo.go runtime: access _cgo_yield indirectly 2017-03-24 15:37:56 +00:00
cgocall.go runtime: handle SIGPIPE in c-archive and c-shared programs 2017-02-03 20:07:36 +00:00
cgocallback.go
cgocheck.go runtime: rename _MSpanStack -> _MSpanManual 2017-04-13 18:20:30 +00:00
chan_test.go runtime: remove redeclared structs to make tests build 2017-08-15 07:19:25 +00:00
chan.go runtime: improve makechan memory checks and allocation calls 2017-08-17 20:24:15 +00:00
chanbarrier_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
closure_test.go
compiler.go all: single space after period. 2016-03-02 00:13:47 +00:00
complex_test.go
complex.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
cpuflags_amd64.go runtime: refactor cpu feature detection for 386 & amd64 2017-05-01 20:46:03 +00:00
cpuprof.go runtime/pprof: prevent a deadlock that SIGPROF might create on mips{,le} 2017-07-26 13:29:59 +00:00
cputicks.go
crash_cgo_test.go runtime: when dying from a signal use the previous signal handler 2017-08-10 10:08:17 +00:00
crash_nonunix_test.go runtime: if the test program hangs, try to get a stack trace 2016-06-15 15:03:48 +00:00
crash_test.go runtime: deflake TestPanicRace 2017-06-07 00:55:56 +00:00
crash_unix_test.go runtime: use SIGKILL if SIGQUIT is blocked; skip tests that need SIGQUIT 2017-07-20 18:09:18 +00:00
debug.go
defs1_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs1_netbsd_386.go
defs1_netbsd_amd64.go
defs1_netbsd_arm.go runtime, cmd/link: fix netbsd/arm EABI support 2016-10-24 15:23:13 +00:00
defs1_solaris_amd64.go
defs2_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs3_linux.go
defs_arm_linux.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_darwin_386.go
defs_darwin_amd64.go
defs_darwin_arm64.go
defs_darwin_arm.go
defs_darwin.go runtime: write sigsetstack for Darwin, fix sigaction arg 2015-12-18 20:56:10 +00:00
defs_dragonfly_amd64.go
defs_dragonfly.go
defs_freebsd_386.go runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
defs_freebsd_amd64.go runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
defs_freebsd_arm.go runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
defs_freebsd.go runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
defs_linux_386.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_amd64.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_arm64.go
defs_linux_arm.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux_mips64x.go
defs_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
defs_linux_ppc64.go
defs_linux_ppc64le.go
defs_linux_s390x.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_linux.go
defs_nacl_386.go
defs_nacl_amd64p32.go
defs_nacl_arm.go
defs_netbsd_386.go
defs_netbsd_amd64.go
defs_netbsd_arm.go
defs_netbsd.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_openbsd_386.go
defs_openbsd_amd64.go
defs_openbsd_arm.go
defs_openbsd.go
defs_plan9_386.go
defs_plan9_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
defs_plan9_arm.go
defs_solaris_amd64.go build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
defs_solaris.go runtime: unify handling of alternate signal stack 2016-09-26 04:07:31 +00:00
defs_windows_386.go
defs_windows_amd64.go
defs_windows.go
duff_386.s runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
duff_amd64.s cmd/compile/internal/ssa: use sse to zero on amd64 2017-08-16 15:52:27 +00:00
duff_arm64.s runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
duff_arm.s runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
duff_mips64x.s runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
duff_ppc64x.s runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
env_plan9.go
env_posix.go runtime: clean redundant call of environ function 2017-05-03 10:02:26 +00:00
env_test.go
error.go runtime: improve output of panic(x) where x is numeric 2017-04-09 22:40:33 +00:00
example_test.go runtime: improve ExampleFrames 2017-04-20 19:46:01 +00:00
export_arm_test.go
export_futex_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
export_linux_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
export_mmap_test.go
export_test.go runtime: make rwmutex work on Ms instead of Gs 2017-06-28 22:08:57 +00:00
export_unix_test.go runtime: use SIGKILL if SIGQUIT is blocked; skip tests that need SIGQUIT 2017-07-20 18:09:18 +00:00
export_windows_test.go
extern.go runtime: fix documentation error about runtime.GC() 2017-06-08 17:47:50 +00:00
fastlog2_test.go
fastlog2.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
fastlog2table.go pprof: improve sampling for heap profiling 2015-10-05 08:15:09 +00:00
float.go runtime: make complex division c99 compatible 2017-03-15 22:45:17 +00:00
funcdata.h cmd/compile,link: generate PC-value tables with inlining information 2017-03-03 21:29:30 +00:00
futex_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
gc_test.go runtime: make ReadMemStats STW for < 25µs 2017-03-04 02:56:37 +00:00
gcinfo_test.go
go_tls.h
HACKING.md runtime: make rwmutex work on Ms instead of Gs 2017-06-28 22:08:57 +00:00
hash32.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
hash64.go runtime: add s390x support (modified files only) 2016-04-06 04:25:06 +00:00
hash_test.go
hashmap_fast.go runtime: refactor out tophash calculation 2017-08-15 00:20:06 +00:00
hashmap.go runtime: make evacDst a top level type 2017-08-18 18:21:10 +00:00
heapdump.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
iface_test.go cmd/compile, runtime: specialize convT2x, don't alloc for zero vals 2017-02-28 19:23:33 +00:00
iface.go cmd/compile: set itab function pointers at compile time 2017-08-15 19:00:03 +00:00
lfstack_32bit.go
lfstack_64bit.go runtime: merge lfstack_amd64.go into lfstack_64bit.go 2016-04-11 06:18:52 +00:00
lfstack_test.go all: fix misprints in comments 2015-06-11 14:18:57 +00:00
lfstack.go runtime: introduce a type for lfstacks 2017-03-19 22:42:24 +00:00
lock_futex.go runtime: fix stack split at bad time when disable inlining 2017-05-29 19:10:39 +00:00
lock_sema.go runtime: access _cgo_yield indirectly 2017-03-24 15:37:56 +00:00
Makefile
malloc_test.go runtime: improve TestMemStats checks 2017-03-31 00:46:16 +00:00
malloc.go runtime: special case allocation of arrays of size 1 2017-08-14 23:32:03 +00:00
map_test.go runtime: make map deletion benchmarks faster to run 2017-08-14 00:50:52 +00:00
mapspeed_test.go runtime: add a map growth benchmark 2017-04-19 13:47:21 +00:00
mbarrier.go cmd/compile: experiment which clobbers all dead pointer fields 2017-04-21 20:19:50 +00:00
mbitmap.go runtime: remove unused prefetch functions 2017-08-08 06:43:49 +00:00
mcache.go runtime: separate spans of noscan objects 2017-04-28 22:50:31 +00:00
mcentral.go runtime: separate spans of noscan objects 2017-04-28 22:50:31 +00:00
mem_bsd.go runtime: mmap(2) on Solaris & Illumos can return EAGAIN. 2017-05-16 21:01:42 +00:00
mem_darwin.go
mem_linux.go runtime: don't hard-code physical page size 2016-09-06 21:05:53 +00:00
mem_plan9.go
mem_windows.go runtime: improve out-of-memory message when VirtualAlloc fails 2017-07-21 01:00:33 +00:00
memclr_386.s runtime: refactor cpu feature detection for 386 & amd64 2017-05-01 20:46:03 +00:00
memclr_amd64.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_arm64.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_arm.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_mips64x.s
memclr_mipsx.s
memclr_plan9_386.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memclr_plan9_amd64.s
memclr_ppc64x.s
memclr_s390x.s runtime, cmd/compile: rename memclr -> memclrNoHeapPointers 2016-10-28 18:20:33 +00:00
memmove_386.s runtime: refactor cpu feature detection for 386 & amd64 2017-05-01 20:46:03 +00:00
memmove_amd64.s runtime: refactor cpu feature detection for 386 & amd64 2017-05-01 20:46:03 +00:00
memmove_arm64.s
memmove_arm.s
memmove_linux_amd64_test.go all: sprinkle t.Parallel on some slow tests 2016-11-04 16:56:57 +00:00
memmove_mips64x.s
memmove_mipsx.s runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
memmove_nacl_amd64p32.s
memmove_plan9_386.s
memmove_plan9_amd64.s
memmove_ppc64x.s runtime: improve memmove performance ppc64,ppc64le 2016-04-13 15:27:59 +00:00
memmove_s390x.s
memmove_test.go
mfinal_test.go runtime: add a use of runtime.KeepAlive's argument 2017-08-14 20:11:21 +00:00
mfinal.go runtime: add a use of runtime.KeepAlive's argument 2017-08-14 20:11:21 +00:00
mfixalloc.go runtime: redo insert/remove of large spans 2017-03-29 14:18:24 +00:00
mgc.go runtime: make STW duration more accurate 2017-08-15 18:47:08 +00:00
mgclarge.go all: remove redundant returns 2017-04-19 20:03:51 +00:00
mgcmark.go runtime: only trace mark assists that do work 2017-07-19 20:56:20 +00:00
mgcsweep.go runtime: separate spans of noscan objects 2017-04-28 22:50:31 +00:00
mgcsweepbuf.go
mgcwork.go runtime: free workbufs during sweeping 2017-04-13 18:20:47 +00:00
mheap.go all: unindent some big chunks of code 2017-08-18 06:59:48 +00:00
mkduff.go cmd/compile/internal/ssa: use sse to zero on amd64 2017-08-16 15:52:27 +00:00
mkfastlog2table.go
mknacl.sh runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
mksizeclasses.go runtime: add "max waste" column to size class table comment 2017-08-10 21:45:01 +00:00
mmap.go runtime: intercept munmap as we do mmap 2017-06-06 23:26:55 +00:00
mprof.go runtime: make runtime.GC() trigger a concurrent GC 2017-03-31 01:15:21 +00:00
msan0.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
msan_amd64.s
msan.go
msize.go runtime: remove sizeToClass 2017-03-13 01:55:44 +00:00
mstats.go runtime: clean up some silly allp loops 2017-06-13 18:57:48 +00:00
net_plan9.go net: refactor poller into new internal/poll package 2017-02-13 18:36:28 +00:00
netpoll_epoll.go runtime: adjust netpoll panic messages 2017-04-25 21:39:18 +00:00
netpoll_kqueue.go runtime: adjust netpoll panic messages 2017-04-25 21:39:18 +00:00
netpoll_nacl.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_solaris.go runtime: adjust netpoll panic messages 2017-04-25 21:39:18 +00:00
netpoll_stub.go os: use poller for file I/O 2017-02-15 19:31:55 +00:00
netpoll_windows.go runtime: adjust netpoll panic messages 2017-04-25 21:39:18 +00:00
netpoll.go runtime: adjust netpoll panic messages 2017-04-25 21:39:18 +00:00
noasm.go
norace_linux_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
norace_test.go
numcpu_freebsd_test.go runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
os2_freebsd.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os2_nacl.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
os2_openbsd.go
os2_plan9.go
os2_solaris.go runtime: if we don't handle a signal on a non-Go thread, raise it 2015-07-22 20:26:29 +00:00
os3_plan9.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
os3_solaris.go
os_android.go
os_darwin_arm64.go hash/crc32: optimize arm64 crc32 implementation 2017-04-13 12:44:10 +00:00
os_darwin_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_darwin.go
os_dragonfly.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
os_freebsd_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_freebsd.go runtime: clear signal stack on main thread 2017-03-20 22:59:26 +00:00
os_linux_arm64.go runtime: gofmt -w -s 2017-04-24 17:01:29 +00:00
os_linux_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_linux_be64.go runtime: fix sigset type for ppc64 big-endian GNU/Linux 2016-10-06 22:24:40 +00:00
os_linux_generic.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
os_linux_mips64x.go
os_linux_mipsx.go
os_linux_noauxv.go
os_linux_ppc64x.go runtime, internal/cpu: CPU capabilities detection for ppc64x 2017-08-14 12:16:42 +00:00
os_linux_s390x.go runtime: get s390x vector facility availability from AT_HWCAP 2016-10-19 21:50:13 +00:00
os_linux.go all: unindent some big chunks of code 2017-08-18 06:59:48 +00:00
os_nacl_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_nacl.go runtime, syscall: reset signal handlers to default in child 2017-06-14 14:00:56 +00:00
os_netbsd_386.go
os_netbsd_amd64.go
os_netbsd_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_netbsd.go runtime: work around NetBSD bug in thread creation 2017-05-31 00:50:43 +00:00
os_openbsd_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_openbsd.go runtime: minor simplifications to signal code 2016-09-28 13:12:47 +00:00
os_plan9_arm.go runtime: use hardware divider to improve performance 2017-04-11 12:25:55 +00:00
os_plan9.go runtime, syscall: reset signal handlers to default in child 2017-06-14 14:00:56 +00:00
os_solaris.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
os_windows.go runtime: always use 2MB stacks on 64-bit Windows 2017-07-18 14:35:35 +00:00
panic.go all: unindent some big chunks of code 2017-08-18 06:59:48 +00:00
plugin.go cmd/compile: set itab function pointers at compile time 2017-08-15 19:00:03 +00:00
print.go cmd/compile: insert ' ' and \n at beginning of walkprint 2017-08-15 21:54:30 +00:00
proc_runtime_test.go
proc_test.go runtime: expand acceptable PingPongHog factor from 2 to 5 2017-06-05 15:51:49 +00:00
proc.go runtime: move selectdone into g 2017-08-15 19:18:00 +00:00
profbuf_test.go runtime: new profile buffer implementation supporting label pointers 2017-02-23 19:47:23 +00:00
profbuf.go runtime: fix false positive race in profile label reading 2017-08-18 21:40:37 +00:00
proflabel.go runtime: fix false positive race in profile label reading 2017-08-18 21:40:37 +00:00
race0.go
race_amd64.s
race.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
rand_test.go runtime: speed up fastrand() % n 2017-02-14 00:01:22 +00:00
rdebug.go
relax_stub.go runtime: use next timer to decide whether to relax 2017-07-07 21:22:31 +00:00
rt0_android_386.s
rt0_android_amd64.s
rt0_android_arm64.s
rt0_android_arm.s runtime: fall back to /proc/self/auxv in Android libs 2016-11-29 15:27:53 +00:00
rt0_darwin_386.s
rt0_darwin_amd64.s runtime: align C library startup calls on amd64 2016-05-25 23:16:46 +00:00
rt0_darwin_arm64.s runtime, runtime/cgo: save callee-saved FP registers on arm64 2016-03-25 23:04:44 +00:00
rt0_darwin_arm.s
rt0_dragonfly_amd64.s
rt0_freebsd_386.s
rt0_freebsd_amd64.s build: move package sources from src/pkg to src 2014-09-08 00:08:51 -04:00
rt0_freebsd_arm.s runtime: add support for openbsd/arm 2015-03-15 04:06:26 +00:00
rt0_linux_386.s
rt0_linux_amd64.s
rt0_linux_arm64.s
rt0_linux_arm.s runtime,runtime/cgo: save callee-saved FP register on arm 2016-05-25 06:54:28 +00:00
rt0_linux_mips64x.s all: fix minor misspellings 2017-04-03 23:19:07 +00:00
rt0_linux_mipsx.s
rt0_linux_ppc64.s runtime, runtime/cgo: conform to PIC register use rules in ppc64 asm 2015-10-18 23:36:39 +00:00
rt0_linux_ppc64le.s runtime: make sure R0 is zero before _main on ppc64le 2017-08-11 17:46:24 +00:00
rt0_linux_s390x.s
rt0_nacl_386.s
rt0_nacl_amd64p32.s
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
rt0_plan9_386.s
rt0_plan9_amd64.s runtime: replace is{plan9,solaris,windows} with GOOS tests 2015-10-23 18:11:17 +00:00
rt0_plan9_arm.s
rt0_solaris_amd64.s
rt0_windows_386.s
rt0_windows_amd64.s
runtime1.go runtime: remove unused prefetch functions 2017-08-08 06:43:49 +00:00
runtime2.go runtime: move selectdone into g 2017-08-15 19:18:00 +00:00
runtime_linux_test.go
runtime_mmap_test.go
runtime_test.go all: remove redundant returns 2017-04-19 20:03:51 +00:00
runtime_unix_test.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
runtime-gdb_test.go runtime: temporarily skip gdb python-related tests on solaris 2017-06-28 05:01:20 +00:00
runtime-gdb.py runtime: fix tab/space inconsistency in runtime-gdb.py 2017-06-08 16:14:52 +00:00
runtime-lldb_test.go
runtime.go
rwmutex_test.go runtime: prevent descheduling while holding rwmutex read lock 2017-07-06 17:04:25 +00:00
rwmutex.go runtime: prevent descheduling while holding rwmutex read lock 2017-07-06 17:04:25 +00:00
select.go runtime: move selectdone into g 2017-08-15 19:18:00 +00:00
sema.go runtime: record mutex event before readying 2017-06-14 16:07:58 +00:00
sigaction_linux.go
signal_386.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_amd64x.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_arm64.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_arm.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_darwin_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_darwin_amd64.go
signal_darwin_arm64.go
signal_darwin_arm.go
signal_darwin.go runtime: unify sigtrampgo 2016-09-26 17:22:42 +00:00
signal_dragonfly_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_dragonfly.go
signal_freebsd_386.go
signal_freebsd_amd64.go
signal_freebsd_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_freebsd.go
signal_linux_386.go
signal_linux_amd64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_arm64.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_linux_mips64x.go
signal_linux_mipsx.go runtime: add support files for linux/mips{,le} port 2016-11-15 21:49:01 +00:00
signal_linux_ppc64x.go
signal_linux_s390x.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_mips64x.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_mipsx.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_nacl_386.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_nacl_amd64p32.go
signal_nacl_arm.go runtime: record current PC for SIGPROF on non-Go thread 2016-10-11 12:56:15 +00:00
signal_nacl.go
signal_netbsd_386.go
signal_netbsd_amd64.go
signal_netbsd_arm.go
signal_netbsd.go
signal_openbsd_386.go
signal_openbsd_amd64.go
signal_openbsd_arm.go
signal_openbsd.go runtime: unify sigtrampgo 2016-09-26 17:22:42 +00:00
signal_plan9.go runtime: signal handling support for plan9_arm 2016-03-07 16:25:17 +00:00
signal_ppc64x.go runtime: avoid repeated findmoduledatap calls 2017-03-06 19:17:24 +00:00
signal_sighandler.go runtime: print user stack on other threads during GOTRACBEACK=crash 2017-03-15 22:16:12 +00:00
signal_solaris_amd64.go
signal_solaris.go runtime: treat SIGSTOP on Solaris as we do on other systems 2016-11-01 20:02:40 +00:00
signal_unix.go runtime: fix crashing with foreign signal handlers on Darwin 2017-08-11 22:30:12 +00:00
signal_windows.go
sigqueue_plan9.go os/signal: avoid race between Stop and receiving on channel 2017-06-24 00:54:01 +00:00
sigqueue.go os/signal: avoid race between Stop and receiving on channel 2017-06-24 00:54:01 +00:00
sigtab_linux_generic.go
sigtab_linux_mipsx.go
sizeclasses.go runtime: add "max waste" column to size class table comment 2017-08-10 21:45:01 +00:00
slice.go runtime: simplify memory capacity check in growslice 2017-08-15 04:23:11 +00:00
softfloat64_test.go
softfloat64.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
softfloat_arm.go runtime: restore arm assembly stubs for div/mod 2017-06-15 03:51:03 +00:00
sqrt_test.go
sqrt.go
stack_test.go runtime: make TestStackGrowth a serial test 2017-07-11 18:32:56 +00:00
stack.go all: unindent some big chunks of code 2017-08-18 06:59:48 +00:00
string_test.go runtime: add slicebytetostring benchmark 2017-03-05 05:14:08 +00:00
string.go runtime: optimize slicebytestostring 2017-03-08 22:05:52 +00:00
stubs2.go runtime: intercept munmap as we do mmap 2017-06-06 23:26:55 +00:00
stubs32.go
stubs_android.go
stubs_asm.go
stubs_linux.go runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
stubs_nonlinux.go runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
stubs.go runtime: fix getclosureptr doc 2017-08-15 17:59:16 +00:00
symtab_test.go runtime: allow calling Func.Name on nil pointer 2017-06-30 23:42:03 +00:00
symtab.go runtime: mark activeModules nosplit/nowritebarrier 2017-08-05 18:05:41 +00:00
sys_arm64.go
sys_arm.go
sys_darwin_386.s time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
sys_darwin_amd64.s time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
sys_darwin_arm64.s runtime: move mincore from stubs.go to os_linux.go 2017-08-11 05:08:44 +00:00
sys_darwin_arm.s runtime: move mincore from stubs.go to os_linux.go 2017-08-11 05:08:44 +00:00
sys_dragonfly_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_freebsd_386.s runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
sys_freebsd_amd64.s runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
sys_freebsd_arm.s runtime: use cpuset_getaffinity for runtime.NumCPU() on FreeBSD 2017-03-10 22:06:24 +00:00
sys_linux_386.s runtime: fix usleep by correctly setting nanoseconds parameter for pselect6 2017-08-18 13:35:47 +00:00
sys_linux_amd64.s runtime: intercept munmap as we do mmap 2017-06-06 23:26:55 +00:00
sys_linux_arm64.s runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
sys_linux_arm.s runtime: use pselect6 for usleep on linux/amd64 and linux/arm 2017-05-19 16:05:39 +00:00
sys_linux_mips64x.s runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
sys_linux_mipsx.s runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
sys_linux_ppc64x.s runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
sys_linux_s390x.s runtime: inform arena placement using sbrk(0) 2017-04-21 14:34:10 +00:00
sys_mips64x.go
sys_mipsx.go
sys_nacl_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_nacl_amd64p32.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_nacl_arm.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_netbsd_386.s runtime: update assembly var names after monotonic time changes 2017-02-21 18:42:05 +00:00
sys_netbsd_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_netbsd_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_nonppc64x.go cmd/compile, cmd/link, runtime: on ppc64x, maintain the TOC pointer in R2 when compiling PIC 2015-11-12 23:18:58 +00:00
sys_openbsd_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_openbsd_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_openbsd_arm.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_plan9_386.s runtime: fix some assembly offset names 2017-02-14 02:09:48 +00:00
sys_plan9_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_plan9_arm.s runtime, syscall: in Plan 9 ARM asm, replace "SWI 0" with "SWI $0" 2017-05-16 20:01:07 +00:00
sys_ppc64x.go
sys_s390x.go
sys_solaris_amd64.s time: record monotonic clock reading in time.Now, for more accurate comparisons 2017-02-03 19:04:52 +00:00
sys_windows_386.s runtime: make time correctly update on Wine 2017-04-25 04:30:06 +00:00
sys_windows_amd64.s runtime: make time correctly update on Wine 2017-04-25 04:30:06 +00:00
sys_x86.go
syscall2_solaris.go runtime, syscall: remove unused bits from Solaris implementation 2015-08-21 11:39:24 +00:00
syscall_nacl.h runtime, unicode: use consistent banner for generated code 2017-06-13 05:33:40 +00:00
syscall_solaris.go
syscall_windows_test.go all: fix minor misspellings 2017-04-03 23:19:07 +00:00
syscall_windows.go syscall: make windows Exit call runtime.exit 2017-06-08 23:28:28 +00:00
textflag.h cmd/compile: track reflect.Type.Method in deadcode 2016-03-11 21:19:20 +00:00
time.go runtime: use next timer to decide whether to relax 2017-07-07 21:22:31 +00:00
timeasm.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
timestub.go time: optimize Now on darwin, windows 2017-02-09 14:45:16 +00:00
tls_arm64.h runtime: set TLSG_IS_VARIABLE for android/arm64. 2015-12-02 22:00:04 +00:00
tls_arm64.s
tls_arm.s runtime: prevent TLS fetching instructions from being assembled on NaCl/ARM 2017-04-08 22:51:18 +00:00
tls_mips64x.s
tls_mipsx.s
tls_ppc64x.s all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
tls_s390x.s
trace.go runtime: record swept and reclaimed bytes in sweep trace 2017-04-19 18:31:14 +00:00
traceback.go runtime: print pc with fp/sp in traceback 2017-06-09 17:26:56 +00:00
type.go runtime: fix file reference in comments 2017-05-29 18:35:35 +00:00
typekind.go
unaligned1.go
unaligned2.go
utf8.go runtime: speed up non-ASCII rune decoding 2016-10-17 11:25:22 +00:00
vdso_linux_amd64.go runtime: support DT_GNU_HASH in VDSO 2017-08-13 22:08:55 +00:00
vdso_none.go runtime: os.Executable runtime support for Darwin 2016-11-07 20:18:36 +00:00
vlop_386.s
vlop_arm_test.go
vlop_arm.s runtime: restore arm assembly stubs for div/mod 2017-06-15 03:51:03 +00:00
vlrt.go
wincallback.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00
write_err_android.go runtime: update android time_now call 2017-02-08 02:56:25 +00:00
write_err.go
zcallback_windows.go
zcallback_windows.s