#39987 [Opn->Fbk]: loss of resources
| From: | tony2001@php.net | Date: | Fri, 29 Dec 2006 17:14:48 +0000 |
| Subject: | #39987 [Opn->Fbk]: loss of resources | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-107005@lists.php.net to get a copy of this message | ||
ID: 39987
Updated by: tony2001@php.net
Reported By: wojtekm86 at konto dot pl
-Status: Open
+Status: Feedback
Bug Type: Semaphore related
Operating System: Linux
PHP Version: 5.2.0
New Comment:
Cannot reproduce.
sem_release() DOES remove the semaphor if no other process uses it.
Previous Comments:
------------------------------------------------------------------------
[2006-12-29 17:01:23] wojtekm86 at konto dot pl
Description:
------------
It's impossible to correct remove semaphores with sem_remove function
when I use them to provide execution of concurrent processes.
When the last process releases the semaphore I should be able to remove
it. But I don't know if another process haven't acquired the semaphore.
For safety reasons I don't remove released semaphores from system.
Now, If I get 128 semaphores and I execute sem_get one more time I will
get warning.
So, I can't remove semaphores (because I don't know if another process
is using it) and I can't get next semaphore.
Reproduce code:
---------------
$id = sem_get(SOME_ID);
sem_acquire($id);
HERE IS CRITICAL REGION
sem_release($id);
Expected result:
----------------
Expected result (and correct, I think) is removal of unused semaphore
in sem_release function if another process didn't acquire it and isn't
waiting for doing this.
Release and Removal of semaphore should be one chain of instructions
without possibility of separation (e.g. by interruption).
Actual result:
--------------
System reaches the maximum number of semaphores and warning is
reported.
The warning is: Warning: sem_get() [function.sem-get]: failed for key
0x5202e59f: No space
left on device in /home/cicik/ftp/php-art/klasy/semafor.php on line 8
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=39987&edit=1