I use UTM.app for virtualisation.
I have full virtualise "Fedora 38-aarch64" in UTM.app with rosetta enabled.
After upgrading Sonoma to 14.3 it stop properly virtualised shared memory.
I have this test file:
#include <stdio.h>
#include <sys/shm.h>
#include <sys/stat.h>
int main ()
{
int segment_id;
char* shared_memory;
struct shmid_ds shmbuffer;
int segment_size;
const int shared_segment_size = 0x6400;
/* Allocate a shared memory segment. */
segment_id = shmget (IPC_PRIVATE, shared_segment_size,
IPC_CREAT | IPC_EXCL | S_IRUSR | S_IWUSR);
/* Attach the shared memory segment. */
shared_memory = (char*) shmat (segment_id, 0, 0);
printf ("shared memory attached at address %p\n", shared_memory);
/* Determine the segment's size. */
shmctl (segment_id, IPC_STAT, &shmbuffer);
segment_size = shmbuffer.shm_segsz;
printf ("segment size: %d\n", segment_size);
/* Write a string to the shared memory segment. */
sprintf (shared_memory, "Hello, world.");
/* Detach the shared memory segment. */
shmdt (shared_memory);
/* Reattach the shared memory segment, at a different address. */
shared_memory = (char*) shmat (segment_id, (void*) 0x5000000, 0);
printf ("shared memory reattached at address %p\n", shared_memory);
/* Print out the string from shared memory. */
printf ("%s\n", shared_memory);
/* Detach the shared memory segment. */
shmdt (shared_memory);
/* Deallocate the shared memory segment. */
shmctl (segment_id, IPC_RMID, 0);
return 0;
}
Command to compile it is
gcc -Wall a.c && ./a.out
When I compile it in virtualised Fedora work properly show this:
shared memory attached address
segment size:
shared memory reattached address
Hello, world.
When I compile directly on M1 mac id it die
shared memory attached address
segment size:
shared memory reattached address
Segmentation fault:
I'm try it also in docker x86 in virtualised fedora and also show error
In "Fedora 38-aarch64 virtualised" run x86 docker "docker run -it --platform linux/amd64 oraclelinux:7.9 bash"
Install gcc in docker shell "yum install -y gcc"
After compile and run it die with
shared memory attached address
segment size:
shared memory reattached address
Hello, world.
assertion failed [rem_idx != ]: Unable find existing allocation shared memory segment to unmap
(VMAllocationTracker.cpp remove_shared_mem)
Trace/breakpoint (core dumped)
How can I fix it?
On previous version of Sonoma works properly.
Thank you