On Wednesday 30 July 2008 20:46:13 Jani Taskinen wrote: > Arnaud Le Blanc kirjoitti: > > Hi, > > > > On Wednesday 30 July 2008 18:37:26 Dmitry Stogov wrote: > >> I see several issues with the patch > >> > >> 1) It assumes that web server (and webserver extensions) won't setup any > >> signal handlers after PHP startup. This assumption may be wrong. > >> > >> 2) It is incompatible with ext/pcntl > > > > If zend_signal() is improved (has Lucas planed to do) to allow extensions to > > use it, then pcntl can do so and become compatible with that. > > > > Since this seems related, maybe someone ought to check this out too: > > http://bugs.php.net/16820 > > A bit "old" bug but has some relation to part below.
Hi, This new signal handling may fix this sort of things if enabled in ZTS. I think this patch may include support for ZTS too (I'm investigating how it can). Regards, Arnaud > > --Jani > > >> 3) It breaks 3 tests (in debug mode) > >> > >> tests/classes/destructor_visibility_001.phpt > >> tests/func/005a.phpt > > > > It seems that this chunk is responsible of that (in zend_unset_timeout): > > > > @@ -1411,8 +1413,14 @@ > > > > #ifdef __CYGWIN__ > > setitimer(ITIMER_REAL, &no_timeout, NULL); > > +# ifdef ZEND_SIGNALS > > + zend_signal(SIGALRM, SIG_DFL); > > +# endif > > #else > > setitimer(ITIMER_PROF, &no_timeout, NULL); > > +# ifdef ZEND_SIGNALS > > + zend_signal(SIGPROF, SIG_DFL); > > +# endif > > #endif > > } > > # endif > > > > I think the signals may not be setted to SIG_DFL here, as zend_set_timeout() > > will not always re-install the signal handlers (OnUpdateTimeout() calls > > zend_unset_timeout() and then zend_set_timeout() with reset_signals=0). > > > >> ext/standard/tests/general_functions/phpinfo.phpt > > > > This is because "Zend Signal Handling => %d" is missing from the expected > > result ;) > > > >> 4) I would also see the patch for HEAD (to commit them together) > >> > >> I think it's not a good idea to commit it in this state. > >> > >> Correct me, if I'm wrong. I've done just a very quick review. > >> > >> Thanks. Dmitry. > >> > >> Lukas Kahwe Smith wrote: > >>> On 30.07.2008, at 01:58, Lucas Nealan wrote: > >>> > >>>> I've updated the patch for Zend Signal Handling, the latest version is > >>>> available on the wiki rfc page: > >>>> > >>>> http://wiki.php.net/rfc/zendsignals > >>>> > >>>> The update solves the reentrance issue with using the a zend linked > >>>> list in > >>>> the default signal handler. I've also added a debug only check, at > >>>> least for > >>>> now, that will output a debug string during shutdown if for some > >>>> reason any > >>>> of the handlers installed during startup are no longer present. > >>>> > >>>> I've added a discoveries section describing other features that may cause > >>>> issue with Zend Signals or should be incorporated. These include SIGCHILD > >>>> handling and pctl_signal. Please read on the wiki for the complete > >>>> details. > >>>> > >>>> Full list of changes: > >>>> > >>>> - Replaced zend ll queue with a pre-allocated internal queue (thx pcntl) > >>>> > >>>> - Added shutdown check for replaced signal handlers > >>>> > >>>> - Added errno protection to the existing sigchld_handler in main.c > >>>> > >>>> - Zend Signal handling is now enabled by default if sigaction is present > >>>> during a non-zts build. > >>>> > >>>> - Made the patch more TSRMLS correct even though ZTS won't work > >>>> > >>>> - Critical section in zend_signal_handler_unblock via sigprocmask for > >>>> queue > >>>> mgmt and so it's zend_signal_handler_defer call will be afforded the same > >>>> signal queuing as when called by the kernel > >>>> > >>>> I've limitedly tested these changes and everything seems normal in gdb. > >>>> Unless I hear otherwise I believe this to be ready to commit. > >>> > >>> Not so happy that it was not possible to get this committed over the > >>> weekend. Johannes did a quick review and it seems like it has enough > >>> support from people and is low risk enough to get committed now. Lets > >>> hope no extension stumbled over this one .. > >>> > >>> @Dmitry: Can you get this applied today? > >>> > >>> regards, > >>> Lukas Kahwe Smith > >>> [EMAIL PROTECTED] > >>> > >>> > >>> > >> -- > >> PHP Internals - PHP Runtime Development Mailing List > >> To unsubscribe, visit: http://www.php.net/unsub.php > >> > >> > >> > > > > > > -- PHP Internals - PHP Runtime Development Mailing List To unsubscribe, visit: http://www.php.net/unsub.php