Skip to content

zend_mm_heap corrupted when serializing/unserializing Enum #181

@earthiverse

Description

@earthiverse

This one works fine:

enum Random: int
{
    case One = 1;
    case Two = 2;
    case Three = 3;
    case Four = 4;
    case Five = 5;
}

$value = (object)[
    'one' => Random::One
];

$serialized = msgpack_serialize($value);
$unserialized = msgpack_unserialize($serialized);

This one seems to fail with zend_mm_heap corrupted after running

enum Random: int
{
    case One = 1;
    case Two = 2;
    case Three = 3;
    case Four = 4;
    case Five = 5;
}

$value = (object)[
    'one' => Random::One
];

$serialized = msgpack_serialize($value);
$unserialized = msgpack_unserialize($serialized);

$serialized2 = msgpack_serialize($value);
$unserialized = msgpack_unserialize($serialized);

Using the object methods also fails:

$value = (object)[
    'one' => Random::One
];

$packer = new \MessagePack(true);
$unpacker = new \MessagePackUnpacker(true);

$serialized = $packer->pack($value);
$unpacker->feed($serialized);
$unpacker->execute();
$unserialized = $unpacker->data();

$unpacker->reset();

$serialized2 = $packer->pack($value);
$unpacker->feed($serialized);
$unpacker->execute();
$unserialized2 = $unpacker->data();

$unpacker->reset();

Errors in both

PHP 8.4.14 (cli) (built: Oct 24 2025 19:07:34) (NTS)
Copyright (c) The PHP Group
Built by https://github.com/docker-library/php
Zend Engine v4.4.14, Copyright (c) Zend Technologies
    with Zend OPcache v8.4.14, Copyright (c), by Zend Technologies
    with Xdebug v3.4.7, Copyright (c) 2002-2025, by Derick Rethans

and

PHP 8.4.16 (cli) (built: Dec 16 2025 16:03:34) (NTS)
Copyright (c) The PHP Group
Built by Homebrew
Zend Engine v4.4.16, Copyright (c) Zend Technologies
    with Xdebug v3.5.0, Copyright (c) 2002-2025, by Derick Rethans
    with Zend OPcache v8.4.16, Copyright (c), by Zend Technologies

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions