Hi:
  could you file a feature req on bugs.php.net?

  I think it's okey to add a zend_restore_user_handler .

  like:

  ZEND_API int zend_restore_user_opcode_handler(zend_uchar opcode) {
    zend_user_opcodes[opcode] = opcode;
    zend_user_opcode_handlers[opcode] = NULL;
    return SUCCESS;
  }

  but it still need dmitry to review  :)

 thanks

On Sun, Feb 12, 2012 at 8:09 PM, yoram bar haim <yora...@zend.com> wrote:
> I first saw this problem while addapting extension to PHP 5.4 but the code is
> the same in 5.3 :
> when you call zend_set_user_opcode_handler() it set's a pointer (handler) in
> zend_user_opcode_handlers and a uint opcode value in zend_user_opcodes to
> ZEND_USER_OPCODE .
>
> you can call zend_set_user_opcode_handler with the original handler to restore
> it, but if the original state did not include ZEND_USER_OPCODE you have no way
> to restore it.
>
> Why restoring ?
> On mac, static variables are not re-initialized on dlclose()+dlopen(). that
> means that apache reload does not re-create zend_user_opcode_handlers and
> zend_user_opcodes.
> if your extension sets user_opcode_handler and is not reloaded in apache
> reload (because you commented it in php.ini, for example), your handlers array
> will actually point to non-exist handler.
> if you will call zend_set_user_opcode_handler() with the original handler at
> MSHUTDOWN, it will restore the handler but zend_user_opcodes[<opcode] will
> still be ZEND_USER_OPCODE so you will end up calling a NULL handler.
>
> we should eather allow zend_set_user_opcode_handler to also set the value in
> zend_user_opcodes[<opcode>] or we should build those arrayes from scratch at
> php_module_init.
>
> currently an extension tha calls zend_set_user_opcode_handler() will make PHP
> crash on mac after disabling the extension and apache reload.
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>



-- 
Laruence  Xinchen Hui
http://www.laruence.com/

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

Reply via email to