1
0
mirror of https://github.com/golang/go synced 2024-10-02 10:28:34 -06:00
go/src/pkg/runtime
Dmitriy Vyukov cb945ba6ba runtime: fix deadlock
The deadlock episodically occurs on misc/cgo/test/TestCthread.
The problem is that starttheworld() leaves some P's with local work
without M's. Then all active M's enter into syscalls, but reject to
wake another M's due to the following check (both in entersyscallblock() and in retake()):
if(p->runqhead == p->runqtail &&
        runtime·atomicload(&runtime·sched.nmspinning) +
        runtime·atomicload(&runtime·sched.npidle) > 0)
        continue;

R=rsc
CC=golang-dev
https://golang.org/cl/7424054
2013-03-07 21:39:59 +04:00
..
cgo cmd/ld: host linking support for linux/amd64 2013-03-07 09:19:02 -05:00
debug runtime/debug: deflake TestFreeOSMemory 2013-02-20 12:34:16 +04:00
pprof runtime/pprof: adjust reported line numbers to show call sites 2013-02-15 14:27:16 -05:00
race runtime: instrument slicebytetostring for race detection 2013-02-13 18:29:59 +04:00
alg.c runtime: always incorporate hash seed at start of hash computation 2013-01-04 07:53:42 -08:00
append_test.go runtime: benchmark for appending N bytes should not append N² bytes. 2013-03-02 21:11:05 +01:00
arch_386.h runtime: special-case append([]byte, string) for small strings 2013-03-01 16:41:39 -08:00
arch_amd64.h runtime: special-case append([]byte, string) for small strings 2013-03-01 16:41:39 -08:00
arch_arm.h runtime: special-case append([]byte, string) for small strings 2013-03-01 16:41:39 -08:00
asm_386.s runtime/cgo: make symbol naming consistent 2013-02-28 16:24:38 -05:00
asm_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
asm_arm.s runtime/cgo: make symbol naming consistent 2013-02-28 16:24:38 -05:00
atomic_386.c runtime: add atomic xchg64 2013-03-05 09:46:52 +02:00
atomic_amd64.c runtime: add 64-bit atomics 2012-04-05 18:47:43 +04:00
atomic_arm.c runtime: add atomic xchg64 2013-03-05 09:46:52 +02:00
callback_windows_386.c runtime: add cgocallback_gofunc that can call Go func value 2013-02-22 16:08:56 -05:00
callback_windows_amd64.c runtime: add cgocallback_gofunc that can call Go func value 2013-02-22 16:08:56 -05:00
cgocall.c cmd/ld: host linking support for linux/amd64 2013-03-07 09:19:02 -05:00
cgocall.h
chan_test.go runtime: add type algorithms for zero-sized types 2012-01-20 10:32:55 +04:00
chan.c runtime: precise garbage collection of channels 2013-02-25 15:58:23 -05:00
closure_test.go
compiler.go runtime: add Compiler 2012-03-05 22:28:02 -05:00
complex_test.go runtime: fix complex division benchmarks 2012-05-11 03:09:14 +08:00
complex.c runtime: inline several float64 routines to speed up complex128 division 2012-08-07 23:45:50 +08:00
cpuprof.c all: clean up C function prototypes 2013-02-26 09:51:33 -08:00
crash_cgo_test.go cmd/go: fix "go run" cgo source when cgo is disabled 2013-02-28 16:07:26 +08:00
crash_test.go runtime: fix false positive deadlock when using runtime.Goexit 2013-03-05 09:40:17 +02:00
debug.go runtime: re-format comments. 2012-11-26 10:53:11 -05:00
defs1_linux.go
defs2_linux.go
defs_arm_linux.go runtime: fix arm 2012-02-23 23:10:38 -05:00
defs_darwin_386.h runtime: madvise and SysUnused for Darwin 2012-01-19 15:51:29 -05:00
defs_darwin_amd64.h runtime: madvise and SysUnused for Darwin 2012-01-19 15:51:29 -05:00
defs_darwin.go runtime: madvise and SysUnused for Darwin 2012-01-19 15:51:29 -05:00
defs_freebsd_386.h runtime: regenerate defs-files for freebsd 2012-11-26 21:29:13 +09:00
defs_freebsd_amd64.h runtime: regenerate defs-files for freebsd 2012-11-26 21:29:13 +09:00
defs_freebsd_arm.h runtime: regenerate defs-files for freebsd 2012-11-26 21:29:13 +09:00
defs_freebsd.go runtime: regenerate defs-files for freebsd 2012-11-26 21:29:13 +09:00
defs_linux_386.h runtime: fix struct Sigaction for Linux/386 2012-06-24 01:41:17 +08:00
defs_linux_amd64.h
defs_linux_arm.h runtime: fix struct Sigaction for Linux/ARM 2012-06-20 01:17:03 +08:00
defs_linux.go
defs_netbsd_386.go runtime: fix netbsd runtime defs 2012-05-16 01:52:20 +10:00
defs_netbsd_386.h runtime: implement SysUnused for netbsd 2012-11-26 22:34:01 +11:00
defs_netbsd_amd64.go runtime: fix netbsd runtime defs 2012-05-16 01:52:20 +10:00
defs_netbsd_amd64.h runtime: implement SysUnused for netbsd 2012-11-26 22:34:01 +11:00
defs_netbsd_arm.h runtime: NetBSD/ARM support 2013-02-13 01:00:04 +08:00
defs_netbsd.go runtime: implement SysUnused for netbsd 2012-11-26 22:34:01 +11:00
defs_openbsd_386.h runtime: implement SysUnused for openbsd 2012-11-26 22:32:59 +11:00
defs_openbsd_amd64.h runtime: implement SysUnused for openbsd 2012-11-26 22:32:59 +11:00
defs_openbsd.go runtime: implement SysUnused for openbsd 2012-11-26 22:32:59 +11:00
defs_plan9_386.h runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
defs_plan9_amd64.h runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
defs_windows_386.h
defs_windows_amd64.h
defs_windows.go
env_plan9.c runtime: implement getenv for Plan 9 2012-12-17 11:07:40 -05:00
env_posix.c runtime/cgo: make symbol naming consistent 2013-02-28 16:24:38 -05:00
error.go runtime: delete Type and implementations (use reflect instead) 2012-02-12 23:26:20 -05:00
export_test.go runtime: implement local work queues (in preparation for new scheduler) 2013-02-23 08:48:02 +04:00
extern.go cmd/5g, cmd/5l, cmd/6l, cmd/8l, cmd/gc, cmd/ld, runtime: accurate args and locals information 2013-02-21 12:52:26 -08:00
float.c runtime: inline several float64 routines to speed up complex128 division 2012-08-07 23:45:50 +08:00
gc_test.go runtime: move TestGcSys into a separate process 2013-03-02 08:36:06 +02:00
hashmap.c runtime: precise garbage collection of hashmaps 2013-02-08 16:00:33 -05:00
hashmap.h runtime: precise garbage collection of hashmaps 2013-02-08 16:00:33 -05:00
iface_test.go cmd/gc: cache itab lookup in convT2I. 2012-07-03 09:09:05 +10:00
iface.c runtime: always incorporate hash seed at start of hash computation 2013-01-04 07:53:42 -08:00
lfstack_test.go runtime: add lock-free stack 2012-04-12 11:49:25 +04:00
lfstack.c runtime: use new CNT_MASK in lfstack 2013-01-26 18:16:43 -08:00
lock_futex.c runtime: diagnose double wakeup on Note 2012-12-24 21:06:57 +04:00
lock_sema.c runtime/pprof: support OS X CPU profiling 2012-02-28 16:18:24 -05:00
Makefile runtime, pprof: add profiling of thread creation 2012-02-08 10:33:54 -05:00
malloc1.go runtime: API 2012-02-19 00:11:44 -05:00
malloc.goc runtime: check the value returned by runtime·SysAlloc 2013-03-01 00:21:08 -05:00
malloc.h runtime: precise garbage collection of channels 2013-02-25 15:58:23 -05:00
mallocrand.go runtime: API 2012-02-19 00:11:44 -05:00
mallocrep1.go all: set GOMAXPROCS to 1 when counting mallocs 2012-12-01 00:38:01 +08:00
mallocrep.go runtime: API 2012-02-19 00:11:44 -05:00
mcache.c runtime: allocate heap metadata at run time 2013-02-15 14:27:03 -05:00
mcentral.c runtime: allocate heap metadata at run time 2013-02-15 14:27:03 -05:00
mem_darwin.c runtime: remove PROT_EXEC from mmap calls. 2013-02-24 22:47:22 +08:00
mem_freebsd.c runtime: remove PROT_EXEC from mmap calls. 2013-02-24 22:47:22 +08:00
mem_linux.c runtime: remove PROT_EXEC from mmap calls. 2013-02-24 22:47:22 +08:00
mem_netbsd.c runtime: remove PROT_EXEC from mmap calls. 2013-02-24 22:47:22 +08:00
mem_openbsd.c runtime: remove PROT_EXEC from mmap calls. 2013-02-24 22:47:22 +08:00
mem_plan9.c src: Add support for 64-bit version of Plan 9 2012-08-31 13:21:13 -04:00
mem_windows.c
mem.go gofmt: apply gofmt -w src misc 2012-10-30 13:38:01 -07:00
memclr_arm.s runtime: remove memset/memclr shim 2012-06-25 23:01:34 +10:00
memmove_386.s
memmove_amd64.s
memmove_arm.s runtime: avoid r9/r10 during memmove 2012-06-25 08:28:30 +10:00
mfinal_test.go
mfinal.c cmd/gc, reflect, runtime: switch to indirect func value representation 2013-02-21 17:01:13 -05:00
mfixalloc.c
mgc0.c undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
mgc0.go runtime: interpret type information during garbage collection 2013-01-10 15:45:46 -05:00
mgc0.h runtime, cmd/ld: make code more position-independent 2013-02-01 11:24:49 -08:00
mheap.c runtime: check the value returned by runtime·SysAlloc 2013-03-01 00:21:08 -05:00
mkasmh.sh build: rename $GOROOT/bin/go-tool to $GOROOT/bin/tool. 2012-02-02 23:32:41 -05:00
mkversion.c
mprof.goc undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
msize.c
os_darwin.h runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
os_freebsd.h runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
os_linux.h runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
os_netbsd.h runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
os_openbsd.h runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
os_plan9.h runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
os_windows.h runtime: allow cgo callbacks on non-Go threads 2013-02-20 17:48:23 -05:00
panic.c cmd/gc, reflect, runtime: switch to indirect func value representation 2013-02-21 17:01:13 -05:00
parfor_test.go runtime: avoid closure in parfor test 2013-02-22 12:11:12 -05:00
parfor.c cmd/gc, reflect, runtime: switch to indirect func value representation 2013-02-21 17:01:13 -05:00
print.c runtime: add conversion specifier to printf for char values 2013-02-19 18:05:44 -08:00
proc_test.go runtime: refactor Syscall benchmark 2013-03-01 01:10:34 +02:00
proc.c runtime: fix deadlock 2013-03-07 21:39:59 +04:00
proc.p
race0.c all: clean up C function prototypes 2013-02-26 09:51:33 -08:00
race_amd64.s runtime: fix racefuncenter argument corruption. 2013-02-28 07:32:29 +01:00
race.c runtime: fix racefuncenter argument corruption. 2013-02-28 07:32:29 +01:00
race.go runtime: add RaceRead/RaceWrite functions 2012-11-14 16:51:23 +04:00
race.h runtime/race: switch to explicit race context instead of goroutine id's 2013-02-06 11:40:54 +04:00
rt0_darwin_386.s
rt0_darwin_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
rt0_freebsd_386.s
rt0_freebsd_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
rt0_freebsd_arm.s runtime: FreeBSD/ARM support 2012-10-12 23:19:39 +08:00
rt0_linux_386.s
rt0_linux_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
rt0_linux_arm.s runtime: get per-process random number from auxv for hash table 2012-05-05 01:59:14 +08:00
rt0_netbsd_386.s
rt0_netbsd_amd64.s runtime: fix netbsd, windows build 2013-03-06 16:55:08 -05:00
rt0_netbsd_arm.s runtime: NetBSD/ARM support 2013-02-13 01:00:04 +08:00
rt0_openbsd_386.s
rt0_openbsd_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
rt0_plan9_386.s runtime: fix floating point exception on Plan 9 2012-04-10 15:14:10 -04:00
rt0_plan9_amd64.s runtime: change amd64 startup convention 2013-03-06 15:03:04 -05:00
rt0_windows_386.s runtime: handle windows exceptions, even in cgo programs 2012-05-30 15:10:54 +10:00
rt0_windows_amd64.s runtime: fix netbsd, windows build 2013-03-06 16:55:08 -05:00
rune.c all: make Unicode surrogate halves illegal as UTF-8 2012-08-08 14:01:23 -07:00
runtime1.goc runtime: prepare for 64-bit ints 2012-09-24 14:58:34 -04:00
runtime_linux_test.go runtime: run init on main thread 2012-03-01 11:48:17 -05:00
runtime_test.go runtime: aggregate defer allocations 2012-12-22 14:54:39 -05:00
runtime-gdb.py runtime: gdb support: use parse_and_eval to get the goroutine id 2012-11-19 10:22:47 -08:00
runtime.c runtime: add atomic xchg64 2013-03-05 09:46:52 +02:00
runtime.h undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
sema.goc pprof: add goroutine blocking profiling 2012-10-06 12:56:04 +04:00
signal_darwin_386.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_darwin_amd64.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_freebsd_386.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_freebsd_amd64.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_freebsd_arm.c all: clean up C function prototypes 2013-02-26 09:51:33 -08:00
signal_linux_386.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_linux_amd64.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_linux_arm.c all: clean up C function prototypes 2013-02-26 09:51:33 -08:00
signal_netbsd_386.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_netbsd_amd64.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_netbsd_arm.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_openbsd_386.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_openbsd_amd64.c runtime: preparation for non-Go threads running Go code 2013-02-18 13:43:12 -05:00
signal_plan9_386.c runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
signal_plan9_amd64.c runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
signal_unix.c runtime: remove unused runtime·signame and runtime·newError 2012-03-06 09:07:00 -08:00
signal_windows_386.c runtime: fix windows build 2013-02-02 11:41:04 -08:00
signal_windows_amd64.c runtime: cgo-related fixes 2013-02-01 08:34:41 -08:00
signals_darwin.h runtime: Permit default behaviour of SIGTSTP, SIGTTIN, SIGTTOU. 2012-02-17 14:36:40 +11:00
signals_freebsd.h runtime: Permit default behaviour of SIGTSTP, SIGTTIN, SIGTTOU. 2012-02-17 14:36:40 +11:00
signals_linux.h runtime: ignore signal 33 == SIGSETXID on GNU/Linux 2012-07-26 22:46:20 -07:00
signals_netbsd.h runtime: fix netbsd signal handling 2012-05-16 01:53:26 +10:00
signals_openbsd.h runtime: block signals during thread creation on openbsd 2012-04-10 21:57:05 +10:00
signals_plan9.h runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
signals_windows.h
sigqueue.goc undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
slice.c runtime: special-case append([]byte, string) for small strings 2013-03-01 16:41:39 -08:00
softfloat64_test.go
softfloat64.go all: update 'gotest' to 'go test' 2012-02-13 13:58:17 -05:00
softfloat_arm.c 5a, 5l, math: Add support for ABSD, ABSF floating point instructions. 2012-08-03 16:15:11 -04:00
stack_test.go runtime: increase stack limit in a test 2013-01-24 20:26:08 +04:00
stack.c runtime: fix stack cache typos 2013-02-26 09:59:17 -08:00
stack.h runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
string_test.go runtime: faster string equality. 2012-08-05 21:35:41 +02:00
string.goc runtime: instrument slicebytetostring for race detection 2013-02-13 18:29:59 +04:00
symtab_test.go
symtab.c cmd/ld: fix symbol table sorting 2013-02-28 16:21:58 -05:00
sys_darwin_386.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_darwin_amd64.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_freebsd_386.s runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
sys_freebsd_amd64.s runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
sys_freebsd_arm.s runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
sys_linux_386.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_linux_amd64.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_linux_arm.s runtime/cgo: make symbol naming consistent 2013-02-28 16:24:38 -05:00
sys_netbsd_386.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_netbsd_amd64.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_netbsd_arm.s runtime/cgo: make symbol naming consistent 2013-02-28 16:24:38 -05:00
sys_openbsd_386.s runtime: use "mp" and "gp" instead of "m" and "g" for local variable name to avoid confusion with the global "m" and "g". 2012-12-19 00:30:29 +08:00
sys_openbsd_amd64.s runtime: ignore failure from madvise 2012-12-22 15:06:28 -05:00
sys_plan9_386.s runtime: add support for panic/recover in Plan 9 note handler 2013-01-30 02:53:56 -08:00
sys_plan9_amd64.s syscall, runtime: Plan 9: use nanotime syscall on amd64 2013-02-26 01:56:08 +01:00
sys_windows_386.s runtime: fix cgo callbacks on windows 2013-03-07 09:18:48 -05:00
sys_windows_amd64.s runtime: fix cgo callbacks on windows 2013-03-07 09:18:48 -05:00
syscall_windows_test.go runtime,misc/cgo/test: disable broken tests so we can test the rest 2013-03-06 15:19:01 -05:00
syscall_windows.goc
thread_darwin.c runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
thread_freebsd.c runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
thread_linux.c runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
thread_netbsd.c runtime: start all threads with runtime.mstart 2013-03-01 11:44:43 -05:00
thread_openbsd.c runtime: fix build on openbsd, plan9 2013-03-01 11:57:50 -05:00
thread_plan9.c runtime: fix build on openbsd, plan9 2013-03-01 11:57:50 -05:00
thread_windows.c runtime: fix cgo callbacks on windows 2013-03-07 09:18:48 -05:00
time_plan9_386.c syscall, runtime: Plan 9: use nanotime syscall on amd64 2013-02-26 01:56:08 +01:00
time.goc runtime: declare addtimer/deltimer in runtime.h 2013-03-05 09:38:15 +02:00
traceback_arm.c undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
traceback_x86.c undo CL 7301062 / 9742f722b558 2013-03-05 15:36:40 -05:00
type.go reflect: add ArrayOf, ChanOf, MapOf, SliceOf 2012-11-13 13:06:29 -05:00
type.h reflect: add ArrayOf, ChanOf, MapOf, SliceOf 2012-11-13 13:06:29 -05:00
typekind.h reflect: add ArrayOf, ChanOf, MapOf, SliceOf 2012-11-13 13:06:29 -05:00
vdso_linux_amd64.c all: clean up C function prototypes 2013-02-26 09:51:33 -08:00
vlop_386.s
vlop_arm_test.go gofmt: apply gofmt -w src misc 2012-10-30 13:38:01 -07:00
vlop_arm.s runtime: ~3.7x speed up of div/mod on ARM 2012-10-20 16:40:19 +08:00
vlrt_386.c
vlrt_arm.c runtime: fix c compiler warning 2012-05-05 01:39:09 +08:00