Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

输入和执行命令有机率导致键盘失灵或者 Panic。 #2

Open
SilverRainZ opened this issue Oct 9, 2015 · 1 comment
Open
Labels

Comments

@SilverRainZ
Copy link
Owner

当执行用户级别的 getchar() 时,过多地调用 printl() 打印 log 似乎会导致奇怪的 panic,比如 Invaild OPCode 或者 GenernalPortection,亦可能导致键盘无响应:无法进入 kb_handle() 函数,而时钟中断正常。

如果将 printl() 替换为空语句,问题似乎不再出现,但是现在 log 仍然非常需要,因此暂不改动。
这可能和 printl() 中的 IO 操作比较耗时有关系。

  #ifdef __LOG_ON
- #define printl(...) _printl(__VA_ARGS__)
+ #define printl(...) ;
  #else
- #define printl(...) _print_null(__VA_ARGS__)
+ #define printl(...) ;
  #endif
@SilverRainZ SilverRainZ added the bug label Oct 9, 2015
@SilverRainZ SilverRainZ changed the title printl may cause panic or keyboard freezes 输入和执行命令有机率导致键盘失灵或者 Panic。 Oct 15, 2015
@SilverRainZ
Copy link
Owner Author

无法稳定复现该 bug,猜测是因为多个进程对 proc 变量和 ptable 表的操作产生的冲突。

有趣的现象:

进程一 init 有时会在 0xc000000d 处发生错误,出错指令是 int 0x80,但实际上进程一的 0xc000000d 处是 jmp $ ,对于其他用户程序,0xc0000000 处才是 int 0x80指令,即,进程空间和 proc 变量不对应。

SilverRainZ added a commit that referenced this issue Oct 16, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant