ID:               38273
 User updated by:  axelluttgens at swing dot be
 Reported By:      axelluttgens at swing dot be
 Status:           Bogus
 Bug Type:         PCNTL related
 Operating System: Mac OSX 10.4.7
 PHP Version:      5.2.4
 New Comment:

Yes, of course. :-)

Thanks a lot,
Axel


Previous Comments:
------------------------------------------------------------------------

[2009-03-19 13:26:54] [email protected]

Looking at this code, we can see that between socket_select() call and
HandleInt() call, the code have no "tickable" statements.

So the first time the tick functions (signal handlers) are called after
socket_select() is before returning from PollSigs().

This is why the output differs in the first interrupt. This also
explains why the two variants (the one with a dummy statement before
calling PollSigs() and the one with switch) have a different behavior.

(this is at most counter-intuitive, but not a bug)

------------------------------------------------------------------------

[2008-07-19 22:25:58] axelluttgens at swing dot be

Hello Jani,

Thanks for your follow-up.
But I don't understand the relationship with ticks. Could you explain?

TIA,
Axel

------------------------------------------------------------------------

[2008-07-18 16:16:09] [email protected]

Ticks are deprecated in PHP 5.3.0 and will be completely removed in
PHP
6. We're not going to waste time trying to fix the inherently broken
thing. 

------------------------------------------------------------------------

[2007-07-14 11:03:56] axelluttgens at swing dot be

So, as announced, I've compiled the php5.2-200707130630 snapshot.
Here follows the output of a "php -i" command:

        PHP Version => 5.2.4-dev
        
        System => Darwin ALMbp.local 8.10.1 Darwin Kernel Version 8.10.1: Wed
May 23 16:33:00 PDT 2007; root:xnu-792.22.5~1/RELEASE_I386 i386
        Build Date => Jul 13 2007 10:13:10
        Configure Command =>  './configure'  '--prefix=/usr/local/php5'
'--with-zlib-dir=/usr' '--with-zlib' '--enable-zip' '--enable-mbstring'
'--enable-exif' '--enable-sockets' '--enable-ftp' '--enable-pcntl'
'--with-iodbc=/usr' '--with-curl=/usr' '--with-curlwrappers'
'--with-ldap=/usr' '--with-kerberos=/usr' '--with-apxs=/usr/sbin/apxs
        Server API => Command Line Interface
        Virtual Directory Support => disabled
        Configuration File (php.ini) Path => /usr/local/php5/lib
        Loaded Configuration File => (none)
        PHP API => 20041225
        PHP Extension => 20060613
        Zend Extension => 220060519
        Debug Build => no
        Thread Safety => disabled
        Zend Memory Manager => enabled
        IPv6 Support => enabled
        Registered PHP Streams => zip, php, file, data, ftp, gopher, telnet,
dict, ldap, http, https, ftps, compress.zlib  
        Registered Stream Socket Transports => tcp, udp, unix, udg
        Registered Stream Filters => string.rot13, string.toupper,
string.tolower, string.strip_tags, convert.*, consumed, convert.iconv.*,
zlib.*
        
        
        This program makes use of the Zend Scripting Language Engine:
        Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Of course, things have changed since July 2006, as I am now on an Intel
Mac, with OS X 10.4.10.
Anyway, I doubt to be able to exacly reproduce the former environement;
but, if needed, I could perhaps try the same on a 10.4.10 PPC.

So, I first tried the original reproduce code, the one dated 2006-07-31
with the "if" statement.
It seems that I still get the unexpected behavior when the dummy
statement ($err = $err;) is commented out:

        $ ./sigtest.php 
        
        ^C
        Warning: socket_select(): unable to select [4]: Interrupted system
call in /Volumes/ALMbpData/sigtest.php on line 32
        Received SIGINT
        ^C
        Warning: socket_select(): unable to select [4]: Interrupted system
call in /Volumes/ALMbpData/sigtest.php on line 32
        Handling SIGINT
        Received SIGINT
        ^C
        Warning: socket_select(): unable to select [4]: Interrupted system
call in /Volumes/ALMbpData/sigtest.php on line 32
        Handling SIGINT
        Received SIGINT
        [and so on...]

and that uncommenting the dummy statement still brings the expected
behavior back:

        $ ./sigtest.php 
        
        ^C
        Warning: socket_select(): unable to select [4]: Interrupted system
call in /Volumes/ALMbpData/sigtest.php on line 32
        Received SIGINT
        Handling SIGINT
        ^C
        Warning: socket_select(): unable to select [4]: Interrupted system
call in /Volumes/ALMbpData/sigtest.php on line 32
        Received SIGINT
        Handling SIGINT
        [and so on...]

In a word, it looks like the same behavior has been carried over from
php 4 to php 5.

On the other hand, re-reading my variant dated 2006-08-02, the one with
the "switch" statement instead of the "if" statement, I believe I just
introduced noise (sorry for that...).
Indeed, one may notice that I introduced a statement between the "case
SOCKET_EINTR:" and the PollSigs() call.
Removing that extraneous statement, the socket_clear_error() call, I
just get the same unexpected behavior as with he original reproduce
code.
In a sense, this is good news, as the basic features of the language
thus behave similary!

HTH,
Axel

------------------------------------------------------------------------

[2007-07-13 07:56:57] axelluttgens at swing dot be

Hello Jani,

I'll try to test the case with the php5.2-200707130630 snapshot during
this week-end.

Thanks for the follow-up,
Axel

------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/38273

-- 
Edit this bug report at http://bugs.php.net/?id=38273&edit=1

Reply via email to