Greetings!

On 8/3/08 9:37 PM, "Arnaud LB" <[EMAIL PROTECTED]> wrote:
> If sigaction is not available Zend Signal Handling will not be
> enabled, so it will not be enabled on Windows (I assume sigaction is
> not available on Windows, it is ?).
> For pthreads and sigprocmask, tsrm_sigmask() can be improved to add
> support for other APIs. However it seems that only pthread provides
> that. Apache/APR relies on phtread_sigmask() when available, or
> sigprocmask() when not.

Ahh correct. Wasn't looking at this correctly. As for non pthread
sigprocmask sounds like we'll find out if it's problematic in any way. Good
to know this is at least what apr is doing.

>> If in the future we have anything in the stack registering a signal handler
>> via zend_signal this will be problematic because SIGG_*_CRITICAL sections
>> will not cover the signals registered post-startup.
> sigaction() is process-wide, so if a thread registers a signal
> post-startup (this is already the case, zend_sigs[] are registered at
> request-startup) the signal will be defered in all threads :)

The deferring will basically work in the new model but I'm relying on
sigprocmask(SIG_BLOCK/SIG_SETMASK) in the SIGNAL_CRITICAL macro's to protect
against jumps during queue maintenance and in zend_signal_handler_unblock
when it calls zend_signal_handler_defer. If a post startup signal is
registered, the latest version of zend_signal doesn't add the new signal
number to the mask, it only sets sa_mask to globals_sigmask. If we add the
registered signal to the global_sigmask before setting sa_mask here then I
think we would be ok.

>> I originally did not use an array as I was hoping to dynamically allocate
>> more queue at runtime. I hadn't fully thought it out because there are
>> almost no calls into the code where this would be apropriate. We could maybe
>> do something in zend_signal_handler_unblock but it might be too late there
>> and with this it would not be possible. I don't think I have a problem with
>> this though.
>> Not that it won't happen but I can't imagine a scenario where we get
>> hammered with more signals than we would have slots in
>> ZEND_SIGNAL_QUEUE_SIZE and it wouldn't be safe to ignore them. At least with
>> the signals we're handling out of the box. This could change when we get
>> pcntl working with this.
> 
> Yes, it may be great to be able to grow the queue when necessary.

I'll make a note in the considerations section of the wiki that when we get
zend_signal ready to hook up to pctnl we'll reconsider the static
allocation.

-lucas


-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to