#35940 [Opn->Fbk]: virtual() and header('Location:') crashes

From: Date: Mon, 10 Apr 2006 13:08:35 +0000
Subject: #35940 [Opn->Fbk]: virtual() and header('Location:') crashes
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-95542@lists.php.net to get a copy of this message
ID: 35940 Updated by: sniper@php.net Reported By: cristic at interaktonline dot com -Status: Open +Status: Feedback Bug Type: Apache related Operating System: Windows XP PHP Version: 5CVS-2006-01-09 (snap) New Comment: Please try using this CVS snapshot: http://snaps.php.net/php5.1-latest.tar.gz For Windows: http://snaps.php.net/win32/php5.1-win32-latest.zip I can not reproduce this bug. Previous Comments: ------------------------------------------------------------------------ [2006-01-11 12:52:01] cristic at interaktonline dot com Now I am able to understand better the problem after studying the manual. http://www.php.net/virtual " To run the sub-request, all buffers are terminated and flushed to the browser, pending headers are sent too." This means that the headers are sent to the browser when virtual() is used. Now, my code from the a.php beeing: <?php virtual('/b.php'); ?> <?php header('Location:c.php'); ?> The normal PHP error message should be on both Linux and Windows machines: Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/a.php:1) in /var/www/html/a.php on line 2 Windows Bug: Right now the PHP on Windows crashes (by seeing the trace), I suppose, when tries to get the line number either where the headers were sent or where the Warning is generated. Linux Bug: The error line that is reported to generate the Warning is 0 instead of the line where the header() statement is used meaning line 2. ------------------------------------------------------------------------ [2006-01-11 12:29:22] cristic at interaktonline dot com I don't know if this is correct but here is what appears into the call stack window: > php5ts.dll!zend_get_executed_lineno(void * * * tsrm_ls=0x015ee1a0) Line 367 + 0x2 bytes C php5ts.dll!zend_error(int type=2, const char * format=0x00a60e3c, ...) Line 930 + 0x8 bytes C php5ts.dll!sapi_header_op(int op=0, void * arg=0x0175fa00, void * * * tsrm_ls=0x015ee1a0) Line 533 + 0xf bytes C php5ts.dll!zif_header(int ht=1, _zval_struct * return_value=0x013c2d98, _zval_struct * * return_value_ptr=0x00000000, _zval_struct * this_ptr=0x00000000, int return_value_used=0, void * * * tsrm_ls=0x015ee1a0) Line 49 + 0x17 bytes C php5ts.dll!zend_do_fcall_common_helper_SPEC(_zend_execute_data * execute_data=0x0175fa98, void * * * tsrm_ls=0x015ee1a0) Line 192 + 0x35 bytes C php5ts.dll!ZEND_DO_FCALL_SPEC_CONST_HANDLER(_zend_execute_data * execute_data=0x00000000, void * * * tsrm_ls=0x015ee1a0) Line 1587 + 0xe bytes C php5ts.dll!execute(_zend_op_array * op_array=0x00000000, void * * * tsrm_ls=0x00000000) Line 92 + 0xc bytes C msvcrt.dll!77c39f8e() [Frames below may be incorrect and/or missing, no symbols loaded for msvcrt.dll] user32.dll!77d510c7() user32.dll!77d5110e() php5ts.dll!php_execute_script(_zend_file_handle * primary_file=0x0175fdcc, void * * * tsrm_ls=0x015ee1a0) Line 1720 + 0x12 bytes C php5apache.dll!apache_php_module_main(request_rec * r=0x007bd2f8, int display_source_mode=0, void * * * tsrm_ls=0x015ee1a0) Line 53 + 0x1b bytes C php5apache.dll!send_php(request_rec * r=0x007bd2f8, int display_source_mode=0, char * filename=0x007bde68) Line 643 + 0xb bytes C php5apache.dll!send_parsed_php(request_rec * r=0x007bd2f8) Line 657 + 0xe bytes C ApacheCore.dll!6ff64bc7() ApacheCore.dll!6ff74a73() ApacheCore.dll!6ff74746() ApacheCore.dll!6ff6be0f() ws2_32.dll!71ab3a91() ApacheCore.dll!6ff6bc5a() msvcrt.dll!77c3a3b0() ws2_32.dll!71ab3a91() ws2_32.dll!71ab87a9() kernel32.dll!7c80b50b() ws2_32.dll!71ab3a91() ws2_32.dll!71ab87a9() kernel32.dll!7c8399f3() for the following error: The thread 'Win32 Thread' (0x13d4) has exited with code 0 (0x0). Unhandled exception at 0x00876d6c (php5ts.dll) in Apache.exe: 0xC0000005: Access violation reading location 0x0001ee6c. with this build: php5.1-win32-200601110730.zip ------------------------------------------------------------------------ [2006-01-09 10:55:06] cristic at interaktonline dot com Description: ------------ When a redirect (header('Location:')) is used with a virtual include the Apache crash: --------------------------- Apache.exe - Application Error --------------------------- The instruction at "0x008736ac" referenced memory at "0x0001ee6c". The memory could not be "read". Click on OK to terminate the program Click on CANCEL to debug the program --------------------------- OK Cancel --------------------------- Reproduce code: --------------- a.php: <?php virtual(/b.php);?> <?php header('Location: http://server.com/c.php');?> b.php: <?php ?> c.php: <?php phpinfo(); ?> Expected result: ---------------- When doing this I just expect to be redirected to the c.php. Actual result: -------------- 1. Windows XP and Apache/1.3.33(Win32): --------------------------- Apache.exe - Application Error --------------------------- The instruction at "0x008736ac" referenced memory at "0x0001ee6c". The memory could not be "read". Click on OK to terminate the program Click on CANCEL to debug the program --------------------------- OK Cancel --------------------------- The php.ini differences with php.ini-dist: short_open_tag = Off output_buffering = 65535 output_handler = ob_gzhandler allow_call_time_pass_reference = Off memory_limit = 100M error_reporting = E_ALL log_errors = On error_log = errors_php register_long_arrays = Off register_argc_argv = Off 2.Linux Fedora RC 4, Apache 2.0.54: The Apache is not crashing anymore but the header() is still not working: Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/a.php:1) in /var/www/html/a.php on line 0 ------------------------------------ The problem I could reproduce on Linux on PHP 4.3.11 as well. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=35940&edit=1

« previous php.bugs (#95542) next »