yuyang66
Results
1
issues of
yuyang66
我在进行操作系统实验的时候,发现了一个会经常发生但又十分难以找到具体原因的bug,我觉得这个bug很可能和writef(“”),bug的产生有关。 我们知道,我们在sys_env_alloc之后,需要为父进程和子进程添加COW保护。但是,在sys_env_alloc函数跳回和执行sys_mem_map函数的过程中,会有大量的栈存储读取操作。而此时用户栈尚未被打上COW标志位,这就导致了子进程和父进程共用的用户栈被改变。而等到子进程执行的时候,子进程调取的用户栈已经不是从sys_env_alloc跳回之后的那个用户栈了,这很可能导致子进程无法正确的运行(尤其是子进程可能无法正常的跳转)。 我猜测,writef(“”)可以多保存几次现场,使得子进程可以正常跳转。但是,用户栈仍然还是被改变了。 这个BUG不仅仅是针对用户栈区域,而且还有可能发生在数据段 Bug的解决方式: 解决方法有很多,我认为最合理的解决方式是:在sys_env_alloc执行时,为父子进程添加COW保护。
bug