||
为了一个忘却的纪念,伤心的纪念,写下这篇日志。
y_event_done函数在即将结束的线程上下文中执行,是不可以在其中执行__asm_reset_thread函数来复位虚拟机的,在以前写调度器时已经注意到了,并留下了详细的注释说明,而且专门为在该函数中实现复位功能增加了一个汇编函数:__asm_reset_switch。
这次为了实现虚拟机转交接力,需要修改y_event_done函数,却把这些忘得干干净净,在此重重地摔了一跤,直接调用__asm_reset_thread函数复位待转交的、正在运行的虚拟机,导致上下文栈出错,程序乱飞,花了我大半天时间才跟踪到这个问题。
郁闷、抓狂。