From ff7d7b271f8e53838aa7f0c0e69c782b599547ad Mon Sep 17 00:00:00 2001 From: Alex Brainman Date: Tue, 15 Feb 2011 09:42:25 +1100 Subject: [PATCH] runtime: detect failed thread creation on Windows Fixes #1495. R=rsc CC=golang-dev https://golang.org/cl/4182047 --- src/pkg/runtime/windows/thread.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/pkg/runtime/windows/thread.c b/src/pkg/runtime/windows/thread.c index 525fd09801..aedd24200a 100644 --- a/src/pkg/runtime/windows/thread.c +++ b/src/pkg/runtime/windows/thread.c @@ -184,11 +184,17 @@ runtime·notesleep(Note *n) void runtime·newosproc(M *m, G *g, void *stk, void (*fn)(void)) { + void *thandle; + USED(stk); USED(g); // assuming g = m->g0 USED(fn); // assuming fn = mstart - runtime·stdcall(runtime·CreateThread, 6, 0, 0, runtime·tstart_stdcall, m, 0, 0); + thandle = runtime·stdcall(runtime·CreateThread, 6, 0, 0, runtime·tstart_stdcall, m, 0, 0); + if(thandle == 0) { + runtime·printf("runtime: failed to create new OS thread (have %d already; errno=%d)\n", runtime·mcount(), runtime·getlasterror()); + runtime·throw("runtime.newosproc"); + } } // Called to initialize a new m (including the bootstrap m).