Description
On ARM64 (aarch64) architecture, ZTS builds of PHP 8.5.2 cause zend_mm_heap corrupted errors when running Laravel Pint. The same code works fine on x86_64.
Cross-platform comparison:
| Architecture |
Build |
Result |
| x86_64 |
Static PHP 8.5.2 ZTS |
✅ Works |
| aarch64 |
Static PHP 8.5.2 ZTS |
❌ Crashes with zend_mm_heap corrupted |
Key details:
- Built with:
zig 0.15.2
- ZTS (Zend Thread Safety): enabled
- Architecture: aarch64 (ARM64 - Apple Silicon M4)
Minimal Reproduction Case
Laravel Pint can be used as a reliable reproduction case:
# Install Pint
composer require laravel/pint
# Run version command - this crashes on ARM64 ZTS
php vendor/bin/pint --version
Expected output:
Actual output on ARM64 ZTS:
zend_mm_heap corrupted
bash: line 1: 2005 Aborted ( php vendor/bin/pint --version )
exit status 134
Workaround
Setting USE_ZEND_ALLOC=0 environment variable fixes the issue:
USE_ZEND_ALLOC=0 php vendor/bin/pint --version
# Output: Pint 1.27.0
This forces PHP to use system memory allocator (malloc) instead of Zend Memory Manager.
PHP Configuration
memory_limit => 1024M
Zend Memory Manager => enabled
ZTS => yes
JIT => Disabled
The same PHP version (8.5.2 ZTS) works fine on x86_64 but fails on aarch64
PHP Version
PHP 8.5.2 (cli) (built: Jan 16 2026 02:41:43) (ZTS zig 0.15.2 aarch64)
Copyright (c) The PHP Group
Built by Static PHP <https://static-php.dev> #StandWithUkraine
Zend Engine v4.5.2, Copyright (c) Zend Technologies
with Zend OPcache v8.5.2, Copyright (c), by Zend Technologies
Operating System
MacOS Tahoe 26.2
Description
On ARM64 (aarch64) architecture, ZTS builds of PHP 8.5.2 cause
zend_mm_heap corruptederrors when running Laravel Pint. The same code works fine on x86_64.Cross-platform comparison:
zend_mm_heap corruptedKey details:
zig 0.15.2Minimal Reproduction Case
Laravel Pint can be used as a reliable reproduction case:
Expected output:
Actual output on ARM64 ZTS:
Workaround
Setting
USE_ZEND_ALLOC=0environment variable fixes the issue:USE_ZEND_ALLOC=0 php vendor/bin/pint --version # Output: Pint 1.27.0This forces PHP to use system memory allocator (malloc) instead of Zend Memory Manager.
PHP Configuration
The same PHP version (8.5.2 ZTS) works fine on x86_64 but fails on aarch64
PHP Version
Operating System
MacOS Tahoe 26.2