From 7b98f0d2c3929b3d961480d9316e9073e9bcc218 Mon Sep 17 00:00:00 2001 From: Kevin DeJong Date: Sat, 10 Dec 2016 23:32:11 -0800 Subject: Ensure child stack passed to clone is 16 byte aligned. --- src/sched.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/sched.rs') diff --git a/src/sched.rs b/src/sched.rs index 4af33203..66b4ed4f 100644 --- a/src/sched.rs +++ b/src/sched.rs @@ -114,8 +114,9 @@ pub fn clone(mut cb: CloneCb, let res = unsafe { let combined = flags.bits() | signal.unwrap_or(0); let ptr = stack.as_mut_ptr().offset(stack.len() as isize); + let ptr_aligned = ptr.offset((ptr as usize % 16) as isize * -1); ffi::clone(mem::transmute(callback as extern "C" fn(*mut Box<::std::ops::FnMut() -> isize>) -> i32), - ptr as *mut c_void, + ptr_aligned as *mut c_void, combined, &mut cb) }; -- cgit v1.2.3