a buffer of double size is mapped into the system, but only half of it
is unmapped in both the client and library.
Index: exec/coroipcs.c
===================================================================
--- exec/coroipcs.c (revision 2112)
+++ exec/coroipcs.c (working copy)
@@ -144,6 +144,16 @@
static void msg_send (void *conn, const struct iovec *iov, unsigned int iov_len,
int locked);
+static inline int
+coroipcs_circular_memory_unmap (void *buf, size_t bytes)
+{
+ int res;
+
+ res = munmap (buf, bytes << 1);
+
+ return (res);
+}
+
static int ipc_thread_active (void *conn)
{
struct conn_info *conn_info = (struct conn_info *)conn;
@@ -240,7 +250,7 @@
api->free (conn_info->private_data);
}
close (conn_info->fd);
- munmap (conn_info->dispatch_buffer, (DISPATCH_SIZE));
+ res = coroipcs_circular_memory_unmap (conn_info->dispatch_buffer, DISPATCH_SIZE);
api->free (conn_info);
api->serialize_unlock ();
return (-1);
Index: lib/coroipcc.c
===================================================================
--- lib/coroipcc.c (revision 2112)
+++ lib/coroipcc.c (working copy)
@@ -481,7 +481,7 @@
shutdown (ipc_segment->fd, SHUT_RDWR);
close (ipc_segment->fd);
shmdt (ipc_segment->shared_memory);
- coroipcc_memory_unmap (ipc_segment->dispatch_buffer, (DISPATCH_SIZE));
+ coroipcc_memory_unmap (ipc_segment->dispatch_buffer, (DISPATCH_SIZE) << 1);
free (ipc_segment);
return (CS_OK);
}
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais