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
 [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