From d2f8af03eb6bc8043cb47b979092f0ff1af109d2 Mon Sep 17 00:00:00 2001 From: Marc Siegel Date: Thu, 26 Dec 2013 13:48:29 -0500 Subject: [PATCH] Workaround apparent bug in 1.8.7/REE: block all during sem_timedwait --- lib/process_shared/posix/semaphore.rb | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/process_shared/posix/semaphore.rb b/lib/process_shared/posix/semaphore.rb index fab29f8..d1fe59e 100644 --- a/lib/process_shared/posix/semaphore.rb +++ b/lib/process_shared/posix/semaphore.rb @@ -28,7 +28,10 @@ module ProcessShared attach_function :sem_post, [:sem_p], :int attach_function :sem_wait, [:sem_p], :int, :blocking => true attach_function :sem_trywait, [:sem_p], :int, :blocking => true - attach_function :sem_timedwait, [:sem_p, TimeSpec], :int, :blocking => true + + # Workaround bug which only appears to affect Ruby 1.8.7 and REE + BLOCKING_SEM_TIMEDWAIT = (RUBY_VERSION != '1.8.7') + attach_function :sem_timedwait, [:sem_p, TimeSpec], :int, :blocking => BLOCKING_SEM_TIMEDWAIT error_check(:sem_close, :sem_unlink, :sem_init, :sem_destroy, :sem_getvalue, :sem_post, :sem_wait, :sem_trywait,