【BUG Report】__i386__场景下协程共享栈有问题
Author: yulesyuCreated Jan 23, 2022Updated Oct 9, 2023
2019/10/21 18:59:06时刻 提交的最新版本有问题。 SHA-1: 18ee765817ae61acc4e1751d91d51ce4768ab3c1
- Replace coctx_swap with Mov version
那个版本修改了coctx_swap汇编函数,以前的版本regs[0]会保留返回地址ret,regs[7]保留esp+4的地址指针;但是此版本之后regs[0]不再保存返回地址,regs[7]保存的esp地址指向返回地址存储的栈。 不保留返回地址会导致在共享栈的模式下,切换协程的coctx_swap汇编函数中,regs[7]恢复esp,但是此时共享栈上的esp指向的返回地址所在的栈可能会被上一个协程覆盖,故不能正确跳转到目标协程。
Source: Tencent/libco