]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: fix race detector by recording read by chansend.
authorKeith Randall <khr@golang.org>
Tue, 21 Jan 2014 07:17:44 +0000 (11:17 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Tue, 21 Jan 2014 07:17:44 +0000 (11:17 +0400)
R=golang-codereviews, dvyukov, khr
CC=golang-codereviews
https://golang.org/cl/54060043

src/pkg/runtime/chan.c

index d90dc78e16152c7d6db1ff06c0e1a5f9e50f4414..81a56488ae29b28ab95bed250e844027d90a2aaa 100644 (file)
@@ -159,6 +159,9 @@ runtime·chansend(ChanType *t, Hchan *c, byte *ep, bool *pres, void *pc)
        G* gp;
        int64 t0;
 
+       if(raceenabled)
+               runtime·racereadobjectpc(ep, t->elem, runtime·getcallerpc(&t), runtime·chansend);
+
        if(c == nil) {
                USED(t);
                if(pres != nil) {
@@ -292,6 +295,8 @@ runtime·chanrecv(ChanType *t, Hchan* c, byte *ep, bool *selected, bool *receive
        G *gp;
        int64 t0;
 
+       // raceenabled: don't need to check ep, as it is always on the stack.
+
        if(debug)
                runtime·printf("chanrecv: chan=%p\n", c);