From 7b5e671326b7516d1ca13cb64050ffda279e66ea Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 9 Mar 2011 06:31:37 +0000 Subject: [PATCH] re PR go/48019 (Need to handle EINTR in libgo testsuite) PR go/48019 Ignore EINTR in runtime_lock_full. From-SVN: r170810 --- libgo/runtime/thread.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libgo/runtime/thread.c b/libgo/runtime/thread.c index b600754f64c..bac3f7dfdc1 100644 --- a/libgo/runtime/thread.c +++ b/libgo/runtime/thread.c @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +#include #include "runtime.h" #include "go-assert.h" @@ -32,8 +33,12 @@ static void runtime_lock_full(Lock *l) __attribute__ ((noinline)); static void runtime_lock_full(Lock *l) { - if(sem_wait(&l->sem) != 0) - runtime_throw("sem_wait failed"); + for(;;){ + if(sem_wait(&l->sem) == 0) + return; + if(errno != EINTR) + runtime_throw("sem_wait failed"); + } } void -- 2.30.2