commit - d4bf606d29304006a85a35a8f09d38bf1529d2af
commit + 01c1b7633c0576ad30880ce8dd96aa20e9bfdbc2
blob - d77e0ccf5f97cc77eef74f433e2651a27873cf6c
blob + 08952aa1374d31c0ac104e8821f118d5245ebcd0
--- src/cmd/venti/srv/arena.c
+++ src/cmd/venti/srv/arena.c
{
needzeroscore(); /* OS X */
+ qlock(&sumlock);
sumwait.l = &sumlock;
+ qunlock(&sumlock);
if(vtproc(sumproc, nil) < 0){
seterr(EOk, "can't start arena checksum slave: %r");
backsumarena(Arena *arena)
{
ASum *as;
-
- if(sumwait.l == nil)
- return;
as = MK(ASum);
if(as == nil)
else
sumq = as;
sumqtail = as;
- rwakeup(&sumwait);
+ /*
+ * Might get here while initializing arenas,
+ * before initarenasum has been called.
+ */
+ if(sumwait.l)
+ rwakeup(&sumwait);
qunlock(&sumlock);
}
qunlock(&sumlock);
arena = as->arena;
free(as);
-
sumarena(arena);
}
}