php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #33156 cygwin version of setitimer doesn't accept ITIMER_PROF
Submitted: 2005-05-27 01:18 UTC Modified: 2005-07-12 09:19 UTC
Votes:3
Avg. Score:5.0 ± 0.0
Reproduced:3 of 3 (100.0%)
Same Version:1 (33.3%)
Same OS:3 (100.0%)
From: tomo at groovecast dot org Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 5.*, 4.* (2005-06-20) OS: win32 / Cygwin
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 you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: tomo at groovecast dot org
New email:
PHP Version: OS:

 

 [2005-05-27 01:18 UTC] tomo at groovecast dot org
Description:
------------
Since Cygwin-1.5.16-1 implements setitimer (ITIMER_REAL, ...) only, tests/func/005a.phpt test always fails. This problem also happens with php5.



Reproduce code:
---------------
tests/func/005a.phpt contents.

Expected result:
----------------
Start
Shutdown



Actual result:
--------------
Start


Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2005-05-27 08:49 UTC] sniper@php.net
Please try using this CVS snapshot:

  http://snaps.php.net/php5-latest.tar.gz
 
For Windows:
 
  http://snaps.php.net/win32/php5-win32-latest.zip


 [2005-05-28 01:33 UTC] tomo at groovecast dot org
I tried php5-200505272030, and the problem remains. windows native version is not the case. It's a cygwin API problem.

cygwin's setitimer implementation is following.

at cygwin-1.5.16-1/winsup/cygwin/timer.cc:354
extern "C" int
setitimer (int which, const struct itimerval *value, struct itimerval *ovalue)
{
  if (which != ITIMER_REAL)
    {
      set_errno (EINVAL);
      return -1;
    }
--snipped--

As you can see setitimer(ITIMER_PROF, ...) fails, and no signal will be generated.
 [2005-06-20 13:20 UTC] nohn@php.net
set_time_limit() does not work unter WinXP/Cygwin, Win2k/Cygwin.
Verified with 4.3.11, 4.4.0RC1, 5.0.4, 5.1.0b1, 5.1-dev.

It works on the same machine under Linux.

Reproduce code:
---------------
<?php
ini_set('display_errors', 0);    
echo "Start\n";
function boo()
{
	echo "Shutdown\n";
}
register_shutdown_function("boo");
/* not necessary, just to show the error sooner */
set_time_limit(1); 
/* infinite loop to simulate long processing */
for (;;) { }
echo "End\n";
?>

Expected result:
----------------
The script terminates after 1 second

Actual result:
--------------
The script loops until it gets interrupted:

$ date; php 005a.php; date
Mon Jun 20 09:45:11     2005
Content-type: text/html
X-Powered-By: PHP/4.3.11

Start
^C
Mon Jun 20 09:48:18     2005
 [2005-06-23 12:03 UTC] nohn@php.net
Verified with PHP5.1.0b2
 [2005-06-25 12:33 UTC] nohn@php.net
Verified with php5-200506250830
 [2005-06-29 21:31 UTC] nlopess@php.net
I've made a patch that fixes this: http://mega.ist.utl.pt/~ncpl/patch_cygwin_setitimer.txt

With it, I've been able to finish 'make test', which was impossible otherwise.
 [2005-07-12 09:19 UTC] dmitry@php.net
Fixed in CVS HEAD, PHP_5_0 and PHP_4_4.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Thu Nov 21 12:01:29 2024 UTC