Edit report at http://bugs.php.net/bug.php?id=52935&edit=1

 ID:                 52935
 Updated by:         fel...@php.net
 Reported by:        laruence at yahoo dot com dot cn
 Summary:            call exit in user_error_handler cause stream  relate
                     core
 Status:             Open
 Type:               Bug
 Package:            Scripting Engine problem
 Operating System:   any
 PHP Version:        5.2.14
 Block user comment: N

 New Comment:

Related to bug #52922


Previous Comments:
------------------------------------------------------------------------
[2010-09-27 17:31:32] laruence at yahoo dot com dot cn

Description:
------------
because in PHP exit is implements by set/longjmp



so the normal sequence 



php_stream_wrapper_log_error

php_stream_display_wrapper_errors

      -> php_error_docref1

php_stream_tidy_wrapper_error_log



when use set_error_handler,  and call exit in use_handler, 

cause the php_stream_tidy_wrapper_error_log to be miss called,



which cause wrap->err_count doesn't reset to zero after request
shutdown.



then cause the following code coredump in
php_stream_display_wrapper_errors



 for (i = 0, l = 0; i < wrapper->err_count; i++) {

                l += strlen(wrapper->err_stack[i]); //core

                if (i < wrapper->err_count - 1) {

                    l += brlen;

                }

            }

Test script:
---------------
<?php

function err_handler(){



    exit;

    return true;

}



set_error_handler('err_handler');

$client = new
SoapClient("http://unreachable.com/ServiceNoWse.asmx?WSDL";);

Expected result:
----------------
normal exit

Actual result:
--------------
core dump


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=52935&edit=1

Reply via email to