浏览代码

UserspaceEmulator: Fix stack for new processes

Fixes #8646.
Gunnar Beutner 4 年之前
父节点
当前提交
cbdc7f9e41
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      Userland/DevTools/UserspaceEmulator/Emulator.cpp

+ 4 - 2
Userland/DevTools/UserspaceEmulator/Emulator.cpp

@@ -134,13 +134,15 @@ void Emulator::setup_stack(Vector<ELF::AuxiliaryValue> aux_vector)
         m_cpu.push32(shadow_wrap_as_initialized(argv_entries[i]));
     u32 argv = m_cpu.esp().value();
 
-    m_cpu.push32(shadow_wrap_as_initialized<u32>(0)); // (alignment)
+    while ((m_cpu.esp().value() + 4) % 16 != 0)
+        m_cpu.push32(shadow_wrap_as_initialized<u32>(0)); // (alignment)
 
     u32 argc = argv_entries.size();
     m_cpu.push32(shadow_wrap_as_initialized(envp));
     m_cpu.push32(shadow_wrap_as_initialized(argv));
     m_cpu.push32(shadow_wrap_as_initialized(argc));
-    m_cpu.push32(shadow_wrap_as_initialized<u32>(0)); // (alignment)
+
+    VERIFY(m_cpu.esp().value() % 16 == 0);
 }
 
 bool Emulator::load_elf()