libco icon indicating copy to clipboard operation
libco copied to clipboard

【BUG Report】__i386__场景下协程共享栈有问题

Open yulesyu opened this issue 3 years ago • 2 comments

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指向的返回地址所在的栈可能会被上一个协程覆盖,故不能正确跳转到目标协程。

yulesyu avatar Jan 23 '22 12:01 yulesyu

哩噶来件已经被我收埋佐啦哈哈 ^ ^

hobby avatar Jan 23 '22 12:01 hobby

这个库是协程是不能线程间转移的,单线程执行怎么会覆盖呢,任意时刻触发协程切换时,CPU上下文只有current和pending两个协程,不可能有两组 同时切换,应该不会覆盖吧。

wedvefv avatar Oct 09 '23 13:10 wedvefv