semctl requires the use of the semun union to work without segfault.
Regards
-steve
Index: lib/util.c
===================================================================
--- lib/util.c (revision 1887)
+++ lib/util.c (working copy)
@@ -264,6 +264,16 @@
return (0);
}
+
+#if defined(_SEM_SEMUN_UNDEFINED)
+union semun {
+ int val;
+ struct semid_ds *buf;
+ unsigned short int *array;
+ struct seminfo *__buf;
+};
+#endif
+
SaAisErrorT
openais_service_connect (
enum service_types service,
@@ -278,6 +288,7 @@
int res;
mar_req_setup_t req_setup;
mar_res_setup_t res_setup;
+ union semun semun;
res_setup.error = SA_AIS_ERR_LIBRARY;
@@ -336,16 +347,22 @@
goto error_exit;
}
- res = semctl (ipc_segment->semid, 0, SETVAL, 0);
+ semun.val = 0;
+ res = semctl (ipc_segment->semid, 0, SETVAL, semun);
if (res != 0) {
goto error_exit;
}
- res = semctl (ipc_segment->semid, 1, SETVAL, 0);
+ res = semctl (ipc_segment->semid, 1, SETVAL, semun);
if (res != 0) {
goto error_exit;
}
+ res = semctl (ipc_segment->semid, 2, SETVAL, semun);
+ if (res != 0) {
+ goto error_exit;
+ }
+
req_setup.shmkey = shmkey;
req_setup.semkey = semkey;
req_setup.service = service;
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais