Files
AdvDebug-Brovan/IDEAS.md
T
2026-06-07 15:30:19 +03:00

2.1 KiB

Ideas

In this file I will mention some ideas, some bugs to fix, and implementations for anyone looking to contribute.

But in a nutshell, the main ways to help would be to add more syscalls with correct implementations, improve visualizations, and improving compatbility with other programs.

Reflection

Right now i'm trying to eliminate reflection from the codebase, any contributions in that regard are welcome!

Syscall implementations (most important for the project)

  • Add more syscall implementations.
  • Fill in missing cases that programs expect during normal execution.
  • Make syscall results and error codes behave closer to Linux.
  • Handle argument validation more carefully.
  • Improve edge cases where the emulator currently returns an unsupported or incomplete result.

and generally improve compatbility with programs.

Visualization improvements

  • Improve the visualizations.
  • Make the emulation menu easier to read while commands are being typed.
  • Distinguish between plain text, valid commands, and expressions the processor can compute.
  • Make output formatting clearer for debugging and state inspection.
  • Improve how information is presented so it is easier to follow during emulation.

Symlinks are currently handled in a bad way: instead of being handled as symlinks, the file is copied to the symlink location.

  • Handle Linux symlink files inside GeneralHelper.cs properly.
  • Keep the symlink target instead of copying the file contents.
  • Support symlink targets as real paths.
  • Make sure path resolution follows symlinks correctly.
  • Avoid losing the fact that a path is a symlink.
  • Avoid bad behavior when symlinks point to other symlinks or form a loop.

Bug in the scheduler

Right now there's a bug in the MLFQ scheduler that causes some multi-threaded windows programs to exit, i didn't dig too deep into it yet, so i'm sorry for the lack of context. but the bug happens mainly on multi-threaded apps, so you can try creating one then seeing what happens. the scheduler stops because it finds 2 waiting threads, which can never execute because no thread are in the 'Ready' state.