The large stack size in cpg_dispatch, resulting from the
message buffer, is causing a segmentation fault in environments
with a constrained stack size, namely, when calling into
cpg_dispatch from Java using JNI (i.e. for
http://github.com/jopereira/jgcs/tree/master/jgcs-corosync).
---
 lib/cpg.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lib/cpg.c b/lib/cpg.c
index b96df4e..f3b2bff 100644
--- a/lib/cpg.c
+++ b/lib/cpg.c
@@ -346,7 +346,7 @@ cs_error_t cpg_dispatch (
        struct cpg_ring_id ring_id;
        uint32_t totem_member_list[CPG_MEMBERS_MAX];
        int32_t errno_res;
-       char dispatch_buf[IPC_DISPATCH_SIZE];
+       char* dispatch_buf;
 
        error = hdb_error_to_cs (hdb_handle_get (&cpg_handle_t_db, handle, 
(void *)&cpg_inst));
        if (error != CS_OK) {
@@ -361,6 +361,7 @@ cs_error_t cpg_dispatch (
                timeout = 0;
        }
 
+       dispatch_buf = malloc(IPC_DISPATCH_SIZE);
        dispatch_data = (struct qb_ipc_response_header *)dispatch_buf;
        do {
                errno_res = qb_ipcc_event_recv (
@@ -504,6 +505,7 @@ cs_error_t cpg_dispatch (
 
 error_put:
        hdb_handle_put (&cpg_handle_t_db, handle);
+       free(dispatch_buf);
        return (error);
 }
 
-- 
1.8.1.4

-- 
Jose Orlando Pereira

Attachment: smime.p7s
Description: S/MIME cryptographic signature

_______________________________________________
discuss mailing list
[email protected]
http://lists.corosync.org/mailman/listinfo/discuss

Reply via email to