]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: diagnose double wakeup on Note
authorDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Dec 2012 17:06:57 +0000 (21:06 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Mon, 24 Dec 2012 17:06:57 +0000 (21:06 +0400)
Double wakeup is prohibited by the Note interface
and checked in lock_sema.c.

R=golang-dev, bradfitz
CC=golang-dev
https://golang.org/cl/6976054

src/pkg/runtime/lock_futex.c

index b4465bff18d1f61b70cc2c13cd9300984d190e94..9b1f5f6db43047e81339e9a3d301e965a72065a0 100644 (file)
@@ -111,7 +111,8 @@ runtime·noteclear(Note *n)
 void
 runtime·notewakeup(Note *n)
 {
-       runtime·xchg(&n->key, 1);
+       if(runtime·xchg(&n->key, 1))
+               runtime·throw("notewakeup - double wakeup");
        runtime·futexwakeup(&n->key, 1);
 }