Hello,
sorry for my repost from psql-novice, probably it was not a right place
for my question.
I'm trying to understand how to work with dynamic shared memory, message
queues and workers.
The problem is I can not initialize any dsm segment -
void _PG_init() { ... dsm_segment *seg = dsm_create(32768, 0); // Segmentation fault
here ... BackgroundWorker worker; sprintf(worker.bgw_name, "mystem wrapper process");
worker.bgw_flags= BGWORKER_SHMEM_ACCESS; worker.bgw_start_time = BgWorkerStart_RecoveryFinished;
worker.bgw_restart_time= BGW_NEVER_RESTART; worker.bgw_main = mainProc; worker.bgw_notify_pid = 0;
RegisterBackgroundWorker(&worker); }
Also I was trying to move dsm_create call to a worker, but with the same
result -
static void mainProc(Datum) { ... dsm_segment *seg = dsm_create(32768, 0); // Segmentation fault
here ... pqsignal(SIGTERM, mystemSigterm); BackgroundWorkerUnblockSignals(); ...
What could be a reason and what am I doing wrong?
PS
test/modules/test_shm_mq works fine...
dynamic_shared_memory_type = posix
OSX 10.11.5
PostgreSQL 9.5.3
--
Best regards,
Max Fomichev