Edit report at https://bugs.php.net/bug.php?id=76307&edit=1
ID: 76307
Updated by: ab@php.net
Reported by: drop_box at live dot de
Summary: strftime format %Z crash php
-Status: Open
+Status: Feedback
Type: Bug
Package: Date/time related
Operating System: Windows 10 1803
PHP Version: 7.2.5
Block user comment: N
Private report: N
New Comment:
That's actually same as before. The first one shows something about ext/libxml, but the second
one doesn't. The common part is still in strftime, which is a function from the CRT.
Unfortunately no much details, as the debug symbols are not used. You can fetch the corresponding
debug symbols from https://windows.php.net/downloads/releases/ .
Otherwise, i'm still scratching my head about how to reproduce it. The only laptop with this
upgrade doesn't show the regression :/ Perhaps you could also check, whether you're using
the latest vc15 redistributable and upgrade it if you don't?
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2018-05-07 13:18:06] drop_box at live dot de
Now I startet directly from cli and
checked all files,
now looks better in my eyes:
ntdll!RtlReportCriticalFailure+88
ntdll!RtlpReportHeapFailure+2f
ntdll!RtlpLogHeapFailure+41
ntdll!RtlFreeHeap+48251
ucrtbase!_free_base+1b
ucrtbase!__crt_unique_heap_ptr<char,__crt_internal_free_policy>::~__crt_unique_heap_ptr<char,__crt_internal_free_policy>+c
ucrtbase!strftime+1a
php7ts!php_strftime+1fc
php7ts!zif_strftime+f
php7ts!ZEND_DO_ICALL_SPEC_RETVAL_USED_HANDLER+6b
php7ts!execute_ex+78
php7ts!zend_execute+152
php7ts!zend_execute_scripts+96
php7ts!php_execute_script+1f6
0x14a00000
ucrtbase!_LocaleUpdate::_LocaleUpdate+115
php7ts!php_execute_script+c1
php!do_cli+ea
php!do_cli+950
0x004e0000
------------------------------------------------------------------------
[2018-05-07 12:27:18] ab@php.net
Thanks for the further info. The backtrace is mising some info due to the absence of the debug
package, I guess. I can't reproduce the crash locally, however the backtrace looks familiar to
that in bug #64359. It might be still the same bug in the CRT.
Maybe yet some factors are relevant to reproduce the bug. Anyway, one more try could be done.
I'd ask you to fetch the debug symbols and retry with the backtrace. Alternatively you could
share the crash dump somewhere.
Thanks.
------------------------------------------------------------------------
[2018-05-06 18:33:02] drop_box at live dot de
Since i got not mutch experience in this area to do backtrace and you guide look a little bit
outdated,
i'm not sure if i do all right.
But this looks for me as the best result:
ntdll!RtlReportCriticalFailure+88
ntdll!RtlpReportHeapFailure+2f
ntdll!RtlpLogHeapFailure+41
ntdll!RtlFreeHeap+48251
ucrtbase!_free_base+1b
ucrtbase!__crt_unique_heap_ptr<char,__crt_internal_free_policy>::~__crt_unique_heap_ptr<char,__crt_internal_free_policy>+c
ucrtbase!strftime+1a
php7ts!php_strftime+1fc
php7ts!xmlParserInputRead+841f
php7ts!execute_internal+25
------------------------------------------------------------------------
[2018-05-06 17:38:39] requinix@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php
for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php
for Win32
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.
------------------------------------------------------------------------
[2018-05-06 17:29:05] drop_box at live dot de
Description:
------------
Since Windows 10 1803 php crash the apache service (httpd.exe),
when setlocal is called in the "wrong" order and then strftime is called with %Z format on
all other formats like %z the "crash" doesn't happen.
Wrong order:
setlocale(LC_TIME,'en_US.UTF-8');
setlocale(LC_CTYPE,'en_US.UTF-8');
strftime('%Z');
Right order:
setlocale(LC_CTYPE,'en_US.UTF-8');
setlocale(LC_TIME,'en_US.UTF-8');
strftime('%Z');
Error is notice in alle php 7+ version (5.6 doesn't had this issue)
tested version: 5.6.35 (no issue here) ,7.0.29, 7.1.16, 7.2.4, 7.2.5
Test script:
---------------
<?php
$value = strftime('%Z');
echo $value.'%Z';
echo '<br>';
setlocale(LC_TIME,'en_US.UTF-8');
$value = strftime('%Z');
echo $value.'%Z';
echo '<br>';
setlocale(LC_CTYPE,'en_US.UTF-8');
// here came the crash in the next line
$value = strftime('%Z');
echo $value.'%Z';
echo '<br>';
Expected result:
----------------
Result should be that it behavior in the same as when you run %z.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=76307&edit=1