From db3e25edad8308c0976c2fc0c0857c8bf1f1d939 Mon Sep 17 00:00:00 2001 From: Ben Menadue Date: Tue, 5 Dec 2017 09:51:31 +1100 Subject: [PATCH 1/2] Update mca_mpool_base_alloc to use malloc instead of posix_memalign for alignment requests of <= sizeof(void *). This works around issue #4564. Signed-off-by: Ben Menadue --- opal/mca/mpool/base/mpool_base_default.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/opal/mca/mpool/base/mpool_base_default.c b/opal/mca/mpool/base/mpool_base_default.c index 45d592b03e..b176d3aaa7 100644 --- a/opal/mca/mpool/base/mpool_base_default.c +++ b/opal/mca/mpool/base/mpool_base_default.c @@ -31,7 +31,11 @@ static void *mca_mpool_default_alloc (mca_mpool_base_module_t *mpool, size_t siz #if HAVE_POSIX_MEMALIGN void *addr = NULL; - (void) posix_memalign (&addr, align, size); + if (align <= sizeof(void *)) { + addr = malloc (size); + } else { + (void) posix_memalign (&addr, align, size); + } return addr; #else void *addr, *ret; From 90fa8af10b2807fba120c59f23ad7d9ef72348dd Mon Sep 17 00:00:00 2001 From: Ben Menadue Date: Wed, 6 Dec 2017 07:02:17 +1100 Subject: [PATCH 2/2] Use correct alignment request in mca_mpool_base_alloc. Signed-off-by: Ben Menadue --- opal/mca/mpool/base/mpool_base_alloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opal/mca/mpool/base/mpool_base_alloc.c b/opal/mca/mpool/base/mpool_base_alloc.c index 95a6ac3a11..77165a3841 100644 --- a/opal/mca/mpool/base/mpool_base_alloc.c +++ b/opal/mca/mpool/base/mpool_base_alloc.c @@ -74,7 +74,7 @@ void *mca_mpool_base_alloc(size_t size, opal_info_t *info, const char *hints) mpool = mca_mpool_base_module_lookup (hints); if (NULL != mpool) { - mem = mpool->mpool_alloc (mpool, size, 0, 0); + mem = mpool->mpool_alloc (mpool, size, sizeof(void *), 0); } if (NULL == mem) {