php-meminfo icon indicating copy to clipboard operation
php-meminfo copied to clipboard

Wrong result with Fibers PHP 8.1

Open vtsykun opened this issue 1 year ago • 0 comments

STR

  1. Run the script.
namespace AAA;

$mem = new \ArrayObject([1, 2, 3]);
$_SERVER = [];
unset($argc, $argv);

$fiber = new \Fiber(static function() use ($mem): void {
    echo "Run from the Fiber...\n";

    while (true) {
        $i = 100;
        while ($i--) {
            $mem->offsetSet('a'.random_int(0, 2000000), 10);
        }
        echo "Count ". $mem->count() ."\n";
        \Fiber::suspend();
    }
});


$mem = null;
unset($mem);

gc_collect_cycles();

$fiber->start();

$fiber->resume();
\meminfo_dump(\fopen('/tmp/mem_dump.json', 'w'));
$fiber->resume();

Actual result: ArrayObject is missing in the memory dump. Expected result: ArrayObject must be persist in the memory dump

mem_dump.json
{
  "header" : {
    "memory_usage" : 397944,
    "memory_usage_real" : 2097152,
    "peak_memory_usage" : 431256,
    "peak_memory_usage_real" : 2097152
  },
  "items": {
    "0x7f5691e58200" : {
        "type" : "array",
        "size" : "72",
        "symbol_name" : "_GET",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "children" : {

        }

    },
    "0x7f5691e58220" : {
        "type" : "array",
        "size" : "72",
        "symbol_name" : "_POST",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "children" : {

        }

    },
    "0x7f5691e58240" : {
        "type" : "array",
        "size" : "72",
        "symbol_name" : "_COOKIE",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "children" : {

        }

    },
    "0x7f5691e58260" : {
        "type" : "array",
        "size" : "72",
        "symbol_name" : "_FILES",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "children" : {

        }

    },
    "0x7f5691e14090" : {
        "type" : "null",
        "size" : "16",
        "symbol_name" : "argv",
        "is_root" : true,
        "frame" : "<GLOBAL>"


    },
    "0x7f5691e14080" : {
        "type" : "null",
        "size" : "16",
        "symbol_name" : "argc",
        "is_root" : true,
        "frame" : "<GLOBAL>"


    },
    "0x7f5691e582c0" : {
        "type" : "array",
        "size" : "72",
        "symbol_name" : "_SERVER",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "children" : {

        }

    },
    "0x7f5691e14070" : {
        "type" : "null",
        "size" : "16",
        "symbol_name" : "mem",
        "is_root" : true,
        "frame" : "<GLOBAL>"


    },
    "0x7f5691e5d640" : {
        "type" : "object",
        "size" : "72",
        "symbol_name" : "fiber",
        "is_root" : true,
        "frame" : "<GLOBAL>"
,
        "class" : "Fiber",
        "object_handle" : "2",
        "children" : {

        }

    }
}
}

vtsykun avatar Feb 17 '24 21:02 vtsykun