Open
Description
Description
The following code:
<?php // based on ext/shmop/tests/shmop_open_private.phpt
$write = 'test';
$shm1 = shmop_open(0x2_0000_0001, 'c', 0777, 1024);
shmop_write($shm1, $write, 0);
$shm2 = shmop_open(0x1_0000_0001, 'c', 0777, 1024);
$read = shmop_read($shm2, 0, 4);
var_dump(is_string($read) && $read !== $write);
Resulted in this output:
bool(false)
But I expected this output instead:
bool(true)
(seen on 64-bit linux with sizeof(int) == 4, sizeof(zend_long) == 8)
Not really something users are likely to do deliberately
This also means that 0x1_0000_0000 is an alias for IPC_PRIVATE, which always creates a new memory segment.
Noticed while looking into #9944
PHP Version
Any
Operating System
No response