Shell Lab Release Notes


  • Fixed a race condition in the reference solution that happened during the creation of a new job. The race existed between (1) the parent adding a new job to the job list and (2) the receipt of a SIGINT or SIGTSTP signal. The fix is to block SIGINT and SIGTSTP signals in the parent until after the new job has been added to the job list. A similar race was already properly handled for SIGCHLD signals.

  • Also made some minor changes to the reference solution:
    • Changed the command line parser supplied to the students so that characters surrounded by single quotes are treated as a single argument. This allows the tiny shell to handle commands such as
      tsh> /bin/sh -c 'ps | fgrep mysplit'
    • Made a slight change to the formatting of job list output.


  • Added a new trace file (trace16.txt) that tests the shell's ability to handle SIGINT and SIGTSTP signals that do not originate from the terminal.


  • Fixed bug in tracefile src/trace10.txt, which told the driver to sleep too long before running the fg command.
  • Removed assumptions in src/Makefile and grade/Makefile that the user had a "." in their Unix path.


  • Initial release.