• Dmitriy Vyukov's avatar
    runtime: fix deadlock · cb945ba6
    Dmitriy Vyukov authored
    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
    cb945ba6
Name
Last commit
Last update
..
cgo Loading commit data...
debug Loading commit data...
pprof Loading commit data...
race Loading commit data...
Makefile Loading commit data...
alg.c Loading commit data...
append_test.go Loading commit data...
arch_386.h Loading commit data...
arch_amd64.h Loading commit data...
arch_arm.h Loading commit data...
asm_386.s Loading commit data...
asm_amd64.s Loading commit data...
asm_arm.s Loading commit data...
atomic_386.c Loading commit data...
atomic_amd64.c Loading commit data...
atomic_arm.c Loading commit data...
callback_windows_386.c Loading commit data...
callback_windows_amd64.c Loading commit data...
cgocall.c Loading commit data...
cgocall.h Loading commit data...
chan.c Loading commit data...
chan_test.go Loading commit data...
closure_test.go Loading commit data...
compiler.go Loading commit data...
complex.c Loading commit data...
complex_test.go Loading commit data...
cpuprof.c Loading commit data...
crash_cgo_test.go Loading commit data...
crash_test.go Loading commit data...
debug.go Loading commit data...
defs1_linux.go Loading commit data...
defs2_linux.go Loading commit data...
defs_arm_linux.go Loading commit data...
defs_darwin.go Loading commit data...
defs_darwin_386.h Loading commit data...
defs_darwin_amd64.h Loading commit data...
defs_freebsd.go Loading commit data...
defs_freebsd_386.h Loading commit data...
defs_freebsd_amd64.h Loading commit data...
defs_freebsd_arm.h Loading commit data...
defs_linux.go Loading commit data...
defs_linux_386.h Loading commit data...
defs_linux_amd64.h Loading commit data...
defs_linux_arm.h Loading commit data...
defs_netbsd.go Loading commit data...
defs_netbsd_386.go Loading commit data...
defs_netbsd_386.h Loading commit data...
defs_netbsd_amd64.go Loading commit data...
defs_netbsd_amd64.h Loading commit data...
defs_netbsd_arm.h Loading commit data...
defs_openbsd.go Loading commit data...
defs_openbsd_386.h Loading commit data...
defs_openbsd_amd64.h Loading commit data...
defs_plan9_386.h Loading commit data...
defs_plan9_amd64.h Loading commit data...
defs_windows.go Loading commit data...
defs_windows_386.h Loading commit data...
defs_windows_amd64.h Loading commit data...
env_plan9.c Loading commit data...
env_posix.c Loading commit data...
error.go Loading commit data...
export_test.go Loading commit data...
extern.go Loading commit data...
float.c Loading commit data...
gc_test.go Loading commit data...
hashmap.c Loading commit data...
hashmap.h Loading commit data...
iface.c Loading commit data...
iface_test.go Loading commit data...
lfstack.c Loading commit data...
lfstack_test.go Loading commit data...
lock_futex.c Loading commit data...
lock_sema.c Loading commit data...
malloc.goc Loading commit data...
malloc.h Loading commit data...
malloc1.go Loading commit data...
mallocrand.go Loading commit data...
mallocrep.go Loading commit data...
mallocrep1.go Loading commit data...
mcache.c Loading commit data...
mcentral.c Loading commit data...
mem.go Loading commit data...
mem_darwin.c Loading commit data...
mem_freebsd.c Loading commit data...
mem_linux.c Loading commit data...
mem_netbsd.c Loading commit data...
mem_openbsd.c Loading commit data...
mem_plan9.c Loading commit data...
mem_windows.c Loading commit data...
memclr_arm.s Loading commit data...
memmove_386.s Loading commit data...
memmove_amd64.s Loading commit data...
memmove_arm.s Loading commit data...
mfinal.c Loading commit data...
mfinal_test.go Loading commit data...
mfixalloc.c Loading commit data...
mgc0.c Loading commit data...
mgc0.go Loading commit data...
mgc0.h Loading commit data...
mheap.c Loading commit data...
mkasmh.sh Loading commit data...
mkversion.c Loading commit data...
mprof.goc Loading commit data...
msize.c Loading commit data...
os_darwin.h Loading commit data...
os_freebsd.h Loading commit data...
os_linux.h Loading commit data...
os_netbsd.h Loading commit data...
os_openbsd.h Loading commit data...
os_plan9.h Loading commit data...
os_windows.h Loading commit data...
panic.c Loading commit data...
parfor.c Loading commit data...
parfor_test.go Loading commit data...
print.c Loading commit data...
proc.c Loading commit data...
proc.p Loading commit data...
proc_test.go Loading commit data...
race.c Loading commit data...
race.go Loading commit data...
race.h Loading commit data...
race0.c Loading commit data...
race_amd64.s Loading commit data...
rt0_darwin_386.s Loading commit data...
rt0_darwin_amd64.s Loading commit data...
rt0_freebsd_386.s Loading commit data...
rt0_freebsd_amd64.s Loading commit data...
rt0_freebsd_arm.s Loading commit data...
rt0_linux_386.s Loading commit data...
rt0_linux_amd64.s Loading commit data...
rt0_linux_arm.s Loading commit data...
rt0_netbsd_386.s Loading commit data...
rt0_netbsd_amd64.s Loading commit data...
rt0_netbsd_arm.s Loading commit data...
rt0_openbsd_386.s Loading commit data...
rt0_openbsd_amd64.s Loading commit data...
rt0_plan9_386.s Loading commit data...
rt0_plan9_amd64.s Loading commit data...
rt0_windows_386.s Loading commit data...
rt0_windows_amd64.s Loading commit data...
rune.c Loading commit data...
runtime-gdb.py Loading commit data...
runtime.c Loading commit data...
runtime.h Loading commit data...
runtime1.goc Loading commit data...
runtime_linux_test.go Loading commit data...
runtime_test.go Loading commit data...
sema.goc Loading commit data...
signal_darwin_386.c Loading commit data...
signal_darwin_amd64.c Loading commit data...
signal_freebsd_386.c Loading commit data...
signal_freebsd_amd64.c Loading commit data...
signal_freebsd_arm.c Loading commit data...
signal_linux_386.c Loading commit data...
signal_linux_amd64.c Loading commit data...
signal_linux_arm.c Loading commit data...
signal_netbsd_386.c Loading commit data...
signal_netbsd_amd64.c Loading commit data...
signal_netbsd_arm.c Loading commit data...
signal_openbsd_386.c Loading commit data...
signal_openbsd_amd64.c Loading commit data...
signal_plan9_386.c Loading commit data...
signal_plan9_amd64.c Loading commit data...
signal_unix.c Loading commit data...
signal_windows_386.c Loading commit data...
signal_windows_amd64.c Loading commit data...
signals_darwin.h Loading commit data...
signals_freebsd.h Loading commit data...
signals_linux.h Loading commit data...
signals_netbsd.h Loading commit data...
signals_openbsd.h Loading commit data...
signals_plan9.h Loading commit data...
signals_windows.h Loading commit data...
sigqueue.goc Loading commit data...
slice.c Loading commit data...
softfloat64.go Loading commit data...
softfloat64_test.go Loading commit data...
softfloat_arm.c Loading commit data...
stack.c Loading commit data...
stack.h Loading commit data...
stack_test.go Loading commit data...
string.goc Loading commit data...
string_test.go Loading commit data...
symtab.c Loading commit data...
symtab_test.go Loading commit data...
sys_darwin_386.s Loading commit data...
sys_darwin_amd64.s Loading commit data...
sys_freebsd_386.s Loading commit data...
sys_freebsd_amd64.s Loading commit data...
sys_freebsd_arm.s Loading commit data...
sys_linux_386.s Loading commit data...
sys_linux_amd64.s Loading commit data...
sys_linux_arm.s Loading commit data...
sys_netbsd_386.s Loading commit data...
sys_netbsd_amd64.s Loading commit data...
sys_netbsd_arm.s Loading commit data...
sys_openbsd_386.s Loading commit data...
sys_openbsd_amd64.s Loading commit data...
sys_plan9_386.s Loading commit data...
sys_plan9_amd64.s Loading commit data...
sys_windows_386.s Loading commit data...
sys_windows_amd64.s Loading commit data...
syscall_windows.goc Loading commit data...
syscall_windows_test.go Loading commit data...
thread_darwin.c Loading commit data...
thread_freebsd.c Loading commit data...
thread_linux.c Loading commit data...
thread_netbsd.c Loading commit data...
thread_openbsd.c Loading commit data...
thread_plan9.c Loading commit data...
thread_windows.c Loading commit data...
time.goc Loading commit data...
time_plan9_386.c Loading commit data...
traceback_arm.c Loading commit data...
traceback_x86.c Loading commit data...
type.go Loading commit data...
type.h Loading commit data...
typekind.h Loading commit data...
vdso_linux_amd64.c Loading commit data...
vlop_386.s Loading commit data...
vlop_arm.s Loading commit data...
vlop_arm_test.go Loading commit data...
vlrt_386.c Loading commit data...
vlrt_arm.c Loading commit data...