php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #13490 Semaphores don't release automatically
Submitted: 2001-09-28 19:03 UTC Modified: 2002-01-14 07:42 UTC
Votes:2
Avg. Score:5.0 ± 0.0
Reproduced:2 of 2 (100.0%)
Same Version:2 (100.0%)
Same OS:0 (0.0%)
From: m at savich dot ru Assigned:
Status: Closed Package: Semaphore related
PHP Version: 4.0.6 OS: FreeBSD 4.1.1
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: m at savich dot ru
New email:
PHP Version: OS:

 

 [2001-09-28 19:03 UTC] m at savich dot ru
simplest script:
<?
$id = sem_get(0xff03e3);
sem_acquire($id);
?>

modules:
'./configure' '--with-apxs=/usr/local/apache/bin/apxs' '--with-mysql' '--enable-sysvsem' '--enable-sysvshm' '--enable-track-vars' '--enable-sockets'

description:
When i run that script for the first time, warning doesnt appear, as it is described in manual. All the other calls hang apache processes without any chance for semaphore to unlock.
However, if i try such variant:

<?
set_time_limit(0);
$id = sem_get(0xff03e3);
sem_acquire($id);
sleep(1);
sem_release($id);
?>

everything works perfectly for single calls, but when I run my crash-test, which calls the php script 200 times at once, it hangs the semaphore again and many apache processes stay frozen.

I think, the reason is incorrect request finalization.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-01-13 08:35 UTC] swm@php.net
This is intended behaviour. This is how semaphores work. =)
Use sem_remove() to remove semaphores.
 [2002-01-13 14:52 UTC] m at savich dot ru
http://www.php.net/manual/ru/function.sem-acquire.php:
"After processing a request, any semaphores acquired by the process but not explicitly released will be released automatically and a warning will be generated."

Therefore, it is NOT intended behaviour, because in my situation semaphores DON'T release automatically. And any failure in php script causes apache to hang up in few seconds, because semaphore is acquired by dead script and all other instances can't work. This really is bug. :-(
 [2002-01-13 20:27 UTC] swm@php.net
My bad. Re-opened.
 [2002-01-14 02:29 UTC] lobbin@php.net
Is this reproducable on 4.1.1?
 [2002-01-14 07:37 UTC] m at savich dot ru
Checked on FreeBSD 4.4 with PHP 4.1.0 - it works!
 [2002-01-14 07:42 UTC] lobbin@php.net
-> Closed.
 [2002-05-28 23:28 UTC] catoc at 163 dot net
In redhat 7.2 php-4.2.1 , have this problem too.
 
PHP Copyright © 2001-2022 The PHP Group
All rights reserved.
Last updated: Sat Jan 22 03:03:33 2022 UTC