Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

PHP Embed SAPI not saving and restoring signal handlers. #8029

Open
@rcmcdonald91

Description

Description

I would expect the the execution context to be restored following the PHP_EMBED_END_BLOCK() macro, but this doesn't seem to be the case for signal handlers.

here is a toy function to call a php function from a specified file:

/* Early work to call a php function from a specified script file */
void
call_php_function(char *file_name, char *function_name)
{
 zend_file_handle file_handle;
 zval retval = {0};
 zend_fcall_info fci = {0};
 zend_fcall_info_cache fci_cache = {0};
 sigset_t oldsigset;
 struct sigaction oldsigaction[32] = {0,};
 some_signal_save_function(&oldsigset, oldsigaction);
 PHP_EMBED_START_BLOCK(0, NULL)
 zend_stream_init_filename(&file_handle, file_name);
 php_execute_script(&file_handle);
 ZVAL_STRING(&fci.function_name, function_name);
 fci.size = sizeof fci;
 fci.retval = &retval;
 zend_call_function(&fci, &fci_cache);
 PHP_EMBED_END_BLOCK()
 some_signal_restore_function(&oldsigset, oldsigaction);
}

Without the signal save/restore wrapping the embed block, the zend_signal_handler and defer handler is still handling the dispatching of signals, which is likely not what a user would want once outside an embed block.

PHP Version

7.4.27

Operating System

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /