Причина, по которой вы не видите проблемы в Linux, заключается в том, что вы делаете безопасную сборку потоков в Windows, но не в Linux. Попробуйте добавить --enable-maintainer-zts
в Linux, а затем проверьте с помощью valgrind (USE_ZEND_ALLOC=0 valgrind /usr/bin/php script.php
)
С первого взгляда на ваш код я увидел, что вы не определили свой php_xsplit_init_globals
, который инициализировал переменные потока. Эта функция должна быть зарегистрирована с MINIT
путем добавления
ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL);
вызов. Может быть, что-то не так, но это первое, что я увидел.