ID: 48752
Updated by: [email protected]
Reported By: [email protected]
Status: Assigned
Bug Type: Date/time related
-Operating System: Solaris 10 x86
+Operating System: *
PHP Version: 5.3.0
Assigned To: derick
New Comment:
Simply script:
$datetime_object = date_create("d");
with the timezone set in php.ini.
The crashes occur only with an invalid date. For some reason the global
last_errors is not NULL anymore (but it is set to NULL during MINIT) but
freed somewhere.
By the way, I do not understand the need to store the warning in a
GLOBALS (for all applications running on the same server) when we work
with object. That's a design flaw as other applications using the same
API at the same time may generate warnings, defeating the whole point of
the warnings (if they did not crash php before). That could affect NTS
server as well.
Previous Comments:
------------------------------------------------------------------------
[2009-10-24 20:34:36] [email protected]
Apache2 Windows builds are multithreaded (php5__ts__.dll) and therefore
have the same problems.
The problem: Multithread bugs do not have enough priority in PHP as
most people use apache on unix in prefork moder or use FastCGI :(
I would look after this, but I have no deep knowledge of the extension.
------------------------------------------------------------------------
[2009-10-24 20:08:15] Brian dot White at foxfire74 dot com
Is anyone looking into this. This also happens in the 5.3.0 Windows
build, and, oftentimes, happens a LOT more than 15 minutes. The PHP
date_create() function calls timelib_error_container_dtor() which
crashes Apache frequently but not on every execution.
Reproduce code:
---------------
<?php
function wp_timezone_override_offset() {
$timezone_string = 'America/New_York';
@date_default_timezone_set( $timezone_string );
$timezone_object = timezone_open( $timezone_string );
$datetime_object = date_create();
if ( false === $timezone_object || false === $datetime_object ) {
return false;
}
return round( timezone_offset_get( $timezone_object, $datetime_object
) / 3600, 2 );
}
$gmt_offset = wp_timezone_override_offset();
echo "$gmt_offset\n";
?>
Expected result:
----------------
-4
Actual result: (When it crashes)
--------------
Thread 75 - System ID 2180
Entry point msvcr90!_endthreadex+6f
Create time 10/24/2009 3:18:56 AM
Time spent in user mode 0 Days 0:0:0.991
Time spent in kernel mode 0 Days 0:0:0.140
Function Arg 1 Arg 2 Arg 3 Source
php5ts!timelib_error_container_dtor+9 00000044 1118e380
0f10aed8 d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\date\lib\timelib.c
@ 153 + 6
php5ts!date_object_period_get_iterator+835 0f1718e0 00000000
00000000 d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\date\php_date.c @
2364 + 1f
php5ts!zif_date_create+9a 00000000 0f10aed8 00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\date\php_date.c @ 2441 + 30
php5ts!execute+10b9 0eca318c 1118e300 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 313 + 41
php5ts!execute+57ea 0eca2894 1118e380 093ff7a8
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 1601 + e
php5ts!execute+298 1137a5b0 1118e301 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 104 + a
php5ts!zend_call_function+7b0 00000000 093ff794 0eca2ca4
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_execute_api.c @ 936 + 1b
php5ts!zif_call_user_func_array+63 00000002 0f169ca0
00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\standard\basic_functions.c @
4755 + 18
php5ts!execute+10b9 0eca2ca4 1118e300 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 313 + 41
php5ts!execute+57ea 0eca213c 1118e380 093ff920
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 1601 + e
php5ts!execute+298 11474c88 1118e301 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 104 + a
php5ts!zend_call_function+7b0 00000000 093ff90c 0eca221c
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_execute_api.c @ 936 + 1b
php5ts!zif_call_user_func_array+63 00000002 0f168cf8
00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\standard\basic_functions.c @
4755 + 18
php5ts!execute+10b9 0eca221c 1118e300 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 313 + 41
php5ts!execute+57ea 0eca1484 1118e380 093ffa98
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 1601 + e
php5ts!execute+298 0f0b7f38 1118e301 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 104 + a
php5ts!zend_call_function+7b0 00000000 093ffa84 0eca1578
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_execute_api.c @ 936 + 1b
php5ts!zif_call_user_func_array+63 00000002 0f16b940
00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\ext\standard\basic_functions.c @
4755 + 18
php5ts!execute+10b9 0eca1578 1118e300 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 313 + 41
php5ts!execute+57ea 1118e380 093ffb9c 00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 1601 + e
php5ts!execute+298 0ec6dea8 1118e300 1118e380
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend_vm_execute.h @ 104 + a
php5ts!zend_execute_scripts+fe 00000008 1118e380 00000000
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\zend\zend.c @ 1189
php5ts!php_execute_script+231 093ffe28 1118e380 00000005
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\main\main.c @ 2196 + 12
php5apache2_2!zm_info_apache+1744 0bfb9e00 012522a8
0bfb9e00
d:\php-sdk\snap_5_3\vc9\x86\php-5.3.0\sapi\apache2handler\sapi_apache2.c
@ 648 + e
libhttpd!ap_run_handler+25 00000000 00000000 00000000
PHP5TS!TIMELIB_ERROR_CONTAINER_DTOR+9In
httpd__PID__5760__Date__10_24_2009__Time_05_25_07AM__374__Second_Chance_Exception_C0000005.dmp
the assembly instruction at php5ts!timelib_error_container_dtor+9 in
C:\PHP\php5ts.dll from The PHP Group has caused an access violation
exception (0xC0000005) when trying to read from memory location
0x00000044 on thread 75
------------------------------------------------------------------------
[2009-07-01 11:48:55] [email protected]
By the way, this seems to be the only problem left for our PHP 5.3
tests in production :). The server "only" crashes and is restarted by
watchdog once per 15 minutes and always with exactly that crashdump only
with the parameter time_str_len slighly different and of course other
date string values.
Thanks Derick for looking after this!
Uwe
------------------------------------------------------------------------
[2009-07-01 11:39:39] [email protected]
Yes it is threaded! (Sun Java System Webserver using NSAPI as SAPI
module is a one-process webserver with pthreads).
In 5.2.x we never had such problems, the PHP userland code did not
change.
------------------------------------------------------------------------
[2009-07-01 11:29:22] [email protected]
Is this a threaded SAPI? (I think I see what the problem is, just need
a confirmation).
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/48752
--
Edit this bug report at http://bugs.php.net/?id=48752&edit=1