On Sat, May 5, 2012 at 2:36 PM, Dmitry Stogov <dmi...@zend.com> wrote: > Hi Laruence, > > Thank you for sending this. > > I'm not sure if the patch is completely correct. > With the patch all the threads share the single copy of script_encoding_list > and when one thread terminates it calls compiler_globals_dtor() and frees > the script_encoding_list. But other threads still keep reference to it. > > I think we have to duplicate script_encoding_list for each thread in the > same way as we do for CG(function_table). right, thanks > > Also I noticed a related issue. At zend.c compiler_globals_dtor() > CG(script_encoding_list) deallocated using free() and in zend_multibyte.c > zend_multibyte_set_script_encoding() using efree(). > > I suppose the second place has to be fixed. > > I would appreciate if you could look into the problems. okey, I will, thanks :)
> > Thanks. Dmitry. > > > > On 05/03/2012 06:51 PM, Laruence wrote: >> >> Hi, Dmitry: >> >> you may want to review this, :) >> >> thanks >> On Thu, May 3, 2012 at 10:39 PM, Xinchen Hui<larue...@php.net> wrote: >>> >>> Commit: 72f19e9a8bcf5712b24fa333a26616eff19ac1ce >>> Author: Xinchen Hui<larue...@php.net> Thu, 3 May 2012 >>> 22:39:53 +0800 >>> Parents: d74d88fbb9c29b1dd5ff05a54b72cf7c9250955c >>> Branches: PHP-5.4 >>> >>> Link: >>> http://git.php.net/?p=php-src.git;a=commitdiff;h=72f19e9a8bcf5712b24fa333a26616eff19ac1ce >>> >>> Log: >>> Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding config) >>> >>> Bugs: >>> https://bugs.php.net/61922 >>> >>> Changed paths: >>> M NEWS >>> M Zend/zend.c >>> >>> >>> Diff: >>> diff --git a/NEWS b/NEWS >>> index 8796cf4..9ef6abf 100644 >>> --- a/NEWS >>> +++ b/NEWS >>> @@ -10,6 +10,8 @@ PHP >>> NEWS >>> (Laruence) >>> >>> - Core: >>> + . Fixed bug #61922 (ZTS build doesn't accept zend.script_encoding >>> config). >>> + (Laruence) >>> . Fixed missing bound check in iptcparse(). (chris at chiappa.net) >>> . Fixed bug #61827 (incorrect \e processing on Windows) (Anatoliy) >>> . Fixed bug #61761 ('Overriding' a private static method with a >>> different >>> diff --git a/Zend/zend.c b/Zend/zend.c >>> index dd299f1..37a1a27 100644 >>> --- a/Zend/zend.c >>> +++ b/Zend/zend.c >>> @@ -781,6 +781,8 @@ void zend_register_standard_ini_entries(TSRMLS_D) /* >>> {{{ */ >>> void zend_post_startup(TSRMLS_D) /* {{{ */ >>> { >>> #ifdef ZTS >>> + zend_encoding **script_encoding_list; >>> + >>> zend_compiler_globals *compiler_globals = >>> ts_resource(compiler_globals_id); >>> zend_executor_globals *executor_globals = >>> ts_resource(executor_globals_id); >>> >>> @@ -795,7 +797,12 @@ void zend_post_startup(TSRMLS_D) /* {{{ */ >>> zend_destroy_rsrc_list(&EG(persistent_list) TSRMLS_CC); >>> free(compiler_globals->function_table); >>> free(compiler_globals->class_table); >>> - compiler_globals_ctor(compiler_globals, tsrm_ls); >>> + if ((script_encoding_list = (zend_encoding >>> **)compiler_globals->script_encoding_list)) { >>> + compiler_globals_ctor(compiler_globals, tsrm_ls); >>> + compiler_globals->script_encoding_list = (const >>> zend_encoding **)script_encoding_list; >>> + } else { >>> + compiler_globals_ctor(compiler_globals, tsrm_ls); >>> + } >>> free(EG(zend_constants)); >>> executor_globals_ctor(executor_globals, tsrm_ls); >>> global_persistent_list =&EG(persistent_list); >>> >>> >>> -- >>> PHP CVS Mailing List (http://www.php.net/) >>> 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