# [EMAIL PROTECTED] / 2007-02-12 23:34:21 +0100:
> Why is this happening? Can you confirm this? What has to be done different?
> If you don't get these results (sef faults (I still want to get 2,3,4,5,6)  
> would you mind
> telling me which version of php you are using?
> 
> The file is t.php and its appended at the bottom (cat t.php)
> 
> Thanks in advance Marc
> 
> 
> [EMAIL PROTECTED] /tmp $ php t.php
>        ======================
>        tescase is !!0!!
>        ======================
>       are the following two results the same?
>       1 :array(2) {
>         [0]=>
>         int(5)
>         [1]=>
>         int(6)
>       }
>       2 :current element in my_iterator_to_arrayArray
>       current element in my_iterator_to_array2
>       current element in my_iterator_to_array3
>       current element in my_iterator_to_array4
>       current element in my_iterator_to_array5
>       current element in my_iterator_to_array6
>       array(6) {
>         [0]=>
>         array(3) {
>           [0]=>
>           Segmentation fault
> 
> 
> [EMAIL PROTECTED] /tmp $ php t.php
>        ======================
>        tescase is !!1!!
>        ======================
>       are the following two results the same?
>       1 :array(2) {
>         [0]=>
>         int(5)
>         [1]=>
>         int(6)
>       }
>       2 :
> 
>       foreach does print what I want (23456), why ?
>       2
>       3
>       4
>       5
>       6
> 
> 
>       running for each the second time results in segfault again. Why ?
>       Segmentation fault
> 
> 
> [EMAIL PROTECTED] /tmp $ php -v
>       PHP 5.1.6-pl6-gentoo (cli) (built: Feb 11 2007 02:37:11)
>       Copyright (c) 1997-2006 The PHP Group
>       Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies
> 
> 
> [EMAIL PROTECTED] /tmp $ cat t.php
>       <?php
>       $testcase = 1;
>       echo " ======================\n";
>       echo " tescase is !!$testcase!!\n";
>       echo " ======================\n";
> 
>       function A()
>       {
>         $a = func_get_args();
>         return new RecursiveArrayIterator(array(func_get_args()));
>       }
> 
>       function my_iterator_to_array($it)
>       {
>         echo $it instanceof IteratorAggregate; // doesn't output anything 
>         so  result is false. So I don't have to try calling getIterator 
> manually
>         $res = array();
>         while ($it->valid()){
>           echo "current element in my_iterator_to_array", 
>           $it->current(),"\n";
>           $res[] = $it->current();
>           $it->next();
>         }
>         return $res;
>       }
> 
>       echo "are the following two results the same?\n";
>       echo "1 :";
>       var_dump(iterator_to_array(new RecursiveIteratorIterator( A (A(2) , 
>       A  (3,4), A(5,6)))));
>       echo "2 :";
>       if ($testcase == 0)
>         var_dump(my_iterator_to_array(new RecursiveIteratorIterator( A 
>         (A(2) ,  A (3,4), A(5,6)))));
> 
>       $ri = new RecursiveIteratorIterator( A (A(2) , A (3,4), A(5,6)));
> 
>       echo "\n\nforeach does print what I want (23456), why ?\n";
>       foreach( $ri as $v) echo "$v\n";
>       // why does the second foreach cause a segfault here?
>       echo "\n\nrunning for each the second time results in segfault 
>       again. Why  ?\n";
>       foreach( $ri as $v) echo "$v\n";


I get a nice row of ducks:

-rw-------  1 roman  roman  2109440 Feb 12 23:09 php512.core
-rw-------  1 roman  roman  2043904 Feb 12 23:09 php513.core
-rw-------  1 roman  roman  2043904 Feb 12 23:09 php514.core
-rw-------  1 roman  roman  2043904 Feb 12 23:09 php515.core
-rw-------  1 roman  roman  2043904 Feb 12 23:09 php516.core
-rw-------  1 roman  roman  2203648 Feb 12 23:09 php520.core
-rw-------  1 roman  roman  1966080 Feb 12 23:09 php521.core

This is from 5.2.1:

#0  zend_std_object_get_class (object=0x7b03d0) at 
/usr/home/roman/install/php/php-5.2.1/Zend/zend_object_handlers.c:1044
    zobj = (zend_object *) 0x8
#1  0x000000000046fe88 in zim_spl_Array_getChildren (ht=8061904, 
return_value=0x7b05e0, return_value_ptr=0x79dc78, 
    this_ptr=0x7b03f8, return_value_used=1) at 
/usr/home/roman/install/php/php-5.2.1/ext/spl/spl_array.c:1386
    entry = (zval **) 0x7b0268
    intern = (spl_array_object *) 0x85c400
#2  0x0000000000517a05 in zend_call_function (fci=0x7fffffffc870, 
fci_cache=0x7fffffffd018)
    at /usr/home/roman/install/php/php-5.2.1/Zend/zend_execute_API.c:984
    lcname = 0x1 <Address 0x1 out of bounds>
    i = 4294952784
    original_return_value = (zval **) 0x7fffffffc920
    calling_symbol_table = (HashTable *) 0xb
    original_function_state_ptr = (zend_function_state *) 0x7fffffffd018
    original_op_array = (zend_op_array *) 0x7fffffffc750
    original_opline_ptr = (zend_op **) 0x7fffffffc918
    current_scope = (zend_class_entry *) 0x0
    calling_scope = (zend_class_entry *) 0x85c400
    check_scope_or_static = (zend_class_entry *) 0x0
    current_this = (zval *) 0x0
    execute_data = {opline = 0x0, function_state = {function_symbol_table = 
0x7afbe8, function = 0x85da00, reserved = {
      0x800b646e9, 0x7aca18, 0x0, 0x7aca08}}, fbc = 0x0, op_array = 0x0, object 
= 0x7b03f8, Ts = 0x7fffffffca30, 
  CVs = 0x7fffffffca00, original_in_execution = 0 '\0', symbol_table = 
0x7943e8, prev_execute_data = 0x7fffffffd010, 
  old_error_reporting = 0x0}
    method_name = (zval *) 0x0
    params_array = (zval *) 0x0
    call_via_handler = 0
    fname = 0xb <Address 0xb out of bounds>
    fname_len = -14512
#3  0x00000000005369db in zend_call_method (object_pp=0x7fffffffc920, 
obj_ce=0x85c400, fn_proxy=0x0, 
    function_name=0x603ec2 "getchildren", function_name_len=11, 
retval_ptr_ptr=0x7fffffffc918, param_count=8, arg1=0x0, arg2=0x0)
    at /usr/home/roman/install/php/php-5.2.1/Zend/zend_interfaces.c:88
    fcic = {initialized = 1 '\001', function_handler = 0x85da00, calling_scope 
= 0x85c400, object_pp = 0x7fffffffc920}
    result = 8
    fci = {size = 72, function_table = 0x51fc4f, function_name = 
0x7fffffffc850, symbol_table = 0x0, 
  retval_ptr_ptr = 0x7fffffffc918, param_count = 0, params = 0x7fffffffc840, 
object_pp = 0x7fffffffc920, 
  no_separation = 1 '\001'}
    z_fname = {value = {lval = 1, dval = 4.9406564584124654e-324, str = {val = 
0x1 <Address 0x1 out of bounds>, 
      len = 8667136}, ht = 0x1, obj = {handle = 1, handlers = 0x844000}}, 
refcount = 0, type = 0 '\0', is_ref = 0 '\0'}
    retval = (zval *) 0x844000
    function_table = (HashTable *) 0x7b03d0
    params = {0x7fffffffc908, 0x7fffffffc910}
#4  0x0000000000465b55 in spl_recursive_it_move_forward_ex (object=0x7b0b50, 
zthis=0x7afe40)
    at /usr/home/roman/install/php/php-5.2.1/ext/spl/spl_iterators.c:277
    iterator = (zend_object_iterator *) 0x85c400
    zobject = (zval *) 0x7b03f8
    ce = (zend_class_entry *) 0x85c400
    retval = (zval *) 0x7b05e0
    child = (zval *) 0x7b05e0
    sub_iter = (zend_object_iterator *) 0x7b03f8
    has_children = 8766464
#5  0x0000000000465ff3 in spl_recursive_it_rewind_ex (object=0x7b0b50, 
zthis=0x7afe40)
    at /usr/home/roman/install/php/php-5.2.1/ext/spl/spl_iterators.c:370
    sub_iter = (zend_object_iterator *) 0x7b03d0
#6  0x000000000058faf9 in ZEND_FE_RESET_SPEC_CV_HANDLER 
(execute_data=0x7fffffffd010) at zend_vm_execute.h:19948
    opline = (zend_op *) 0x7b43d0
    array_ptr = (zval *) 0x7b0088
    fe_ht = (HashTable *) 0x7fffffffd0a0
    iter = (zend_object_iterator *) 0x7ad330
    ce = (zend_class_entry *) 0x844400
    is_empty = 8 '\b'
#7  0x000000000054256f in execute (op_array=0x7ac910) at zend_vm_execute.h:92
    execute_data = {opline = 0x7b43d0, function_state = {function_symbol_table 
= 0x7afbe8, function = 0x7ac910, reserved = {
      0x800b646e9, 0x7aca18, 0x0, 0x7aca08}}, fbc = 0x0, op_array = 0x7ac910, 
object = 0x0, Ts = 0x7fffffffca30, 
  CVs = 0x7fffffffca00, original_in_execution = 0 '\0', symbol_table = 
0x7943e8, prev_execute_data = 0x0, 
  old_error_reporting = 0x0}
#8  0x0000000000524db8 in zend_execute_scripts (type=8, retval=0x0, 
file_count=3)
    at /usr/home/roman/install/php/php-5.2.1/Zend/zend.c:1135
    files = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 
0x7fffffffd200, reg_save_area = 0x7fffffffd110}}
    i = 1
    file_handle = (zend_file_handle *) 0x7fffffffea80
    orig_op_array = (zend_op_array *) 0x0
    orig_retval_ptr_ptr = (zval **) 0x0
    local_retval = (zval *) 0x0
#9  0x00000000004e4fe6 in php_execute_script (primary_file=0x7fffffffea80)
    at /usr/home/roman/install/php/php-5.2.1/main/main.c:1784
    realfile = 
"/usr/home/roman/tmp/marc.weber\000\000W\004c\000\000\000\000\000\000\001\000\000\000\000\000\000\000(\212\000\000\000\000\000x(\212\000\000\000\000\000\000\211t",
 '\0' <repeats 101 times>, 
"GR`\000\000\000\000\000\000\001\000\000\000\000\000\000 c\210\000\000\000\000\000\004\000\000\000\000\000\000\000\006\225ü\0171",
 '\0' <repeats 11 times>, "Đ\236C", '\0' <repeats 45 times>, 
"\226Żt\000\b\000\000\000 {R\000\000\000\000\000`\201v\000\b\000\000\000Pä˙˙˙\177\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\000\t*š\n\000\000\000\000EKA\000\000\000\000"...
    prepend_file_p = (zend_file_handle *) 0x0
    append_file_p = (zend_file_handle *) 0x0
    prepend_file = {type = 0 '\0', filename = 0x0, opened_path = 0x0, handle = 
{fd = 0, fp = 0x0, stream = {handle = 0x0, 
      reader = 0, closer = 0, fteller = 0, interactive = 0}}, free_filename = 0 
'\0'}
    append_file = {type = 0 '\0', filename = 0x0, opened_path = 0x0, handle = 
{fd = 0, fp = 0x0, stream = {handle = 0x0, 
      reader = 0, closer = 0, fteller = 0, interactive = 0}}, free_filename = 0 
'\0'}
    old_cwd = 0x7fffffffd210 ""
    retval = 0
#10 0x00000000005aeb54 in main (argc=2, argv=0x7fffffffeb38) at 
/usr/home/roman/install/php/php-5.2.1/sapi/cli/php_cli.c:1114
    pce = (zend_class_entry *) 0x7fffffffe8f0
    arg = (zval *) 0x0
    ref = (zval *) 0x0
    execute_data = {opline = 0x8008670b0, function_state = 
{function_symbol_table = 0x80074d659, function = 0x1, reserved = {
      0x80074c6df, 0x0, 0x7fffffffeb50, 0x7fffffffeb18}}, fbc = 0x7fffffffeb10, 
op_array = 0xd550b87a, object = 0x1, Ts = 0x0, 
  CVs = 0x0, original_in_execution = 0 '\0', symbol_table = 0x0, 
prev_execute_data = 0x800742000, old_error_reporting = 0x0}
    len = 140737488349424
    argn = (zval *) 0x0
    input = 0x0
    index = 140737488350032
    argi = (zval *) 0x800872ae0
    exit_status = 0
    c = 8
    file_handle = {type = 2 '\002', filename = 0x7fffffffed38 "tmp/marc.weber", 
opened_path = 0x0, handle = {fd = 13322976, 
    fp = 0x800cb4ae0, stream = {handle = 0x800cb4ae0, reader = 0x536460 
<zend_stream_stdio_reader>, 
      closer = 0x536480 <zend_stream_stdio_closer>, fteller = 0x5364a0 
<zend_stream_stdio_fteller>, interactive = 0}}, 
  free_filename = 0 '\0'}
    behavior = 1
    reflection_what = 0x0
    orig_optind = 1
    orig_optarg = 0x0
    arg_free = 0x7fffffffed38 "tmp/marc.weber"
    arg_excp = (char **) 0x7fffffffc6b0
    script_file = 0x7fffffffed38 "tmp/marc.weber"
    interactive = 0
    module_started = 1
    request_started = 1
    lineno = 1
    exec_direct = 0x0
    exec_run = 0x0
    exec_begin = 0x0
    exec_end = 0x0
    param_error = 0x0
    hide_argv = 0
    ini_entries_len = -5904


-- 
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to