diff --git a/kernel/kernel/Thread.cpp b/kernel/kernel/Thread.cpp index f1a54ed6..de2f81e6 100644 --- a/kernel/kernel/Thread.cpp +++ b/kernel/kernel/Thread.cpp @@ -285,6 +285,9 @@ namespace Kernel // auxv needed_size += auxv.size() * sizeof(LibELF::AuxiliaryVector); + if (auto rem = needed_size % alignof(char*)) + needed_size += alignof(char*) - rem; + if (needed_size > m_userspace_stack->size()) return BAN::Error::from_errno(ENOBUFS); @@ -358,8 +361,6 @@ namespace Kernel stack_push_str(envp[i]); } - ASSERT(vaddr == userspace_stack_top()); - setup_exec(entry, userspace_stack_top() - needed_size); return {};