summaryrefslogtreecommitdiff
path: root/src/runtime/rt1_amd64_darwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/runtime/rt1_amd64_darwin.c')
-rw-r--r--src/runtime/rt1_amd64_darwin.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/runtime/rt1_amd64_darwin.c b/src/runtime/rt1_amd64_darwin.c
index 453bd519c..b61475672 100644
--- a/src/runtime/rt1_amd64_darwin.c
+++ b/src/runtime/rt1_amd64_darwin.c
@@ -130,6 +130,7 @@ sighandler(int32 sig, struct siginfo *info, void *context)
{
if(panicking) // traceback already printed
sys_Exit(2);
+ panicking = 1;
_STRUCT_MCONTEXT64 *uc_mcontext = get_uc_mcontext(context);
_STRUCT_X86_THREAD_STATE64 *ss = get___ss(uc_mcontext);
@@ -282,11 +283,13 @@ lock(Lock *l)
if(xadd(&l->key, 1) > 1) // someone else has it; wait
mach_semacquire(l->sema);
+ m->locks++;
}
void
unlock(Lock *l)
{
+ m->locks--;
if(xadd(&l->key, -1) > 0) // someone else is waiting
mach_semrelease(l->sema);
}