Bomb Lab Release Notes


  • Added a unique hash for each bomb to prevent spoofing. Thanks to Zaheer Chothia, ETH, Switzerland.
  • Added a timeout to prevent the request daemon from hanging while interacting with clients under heavy loads. Thanks to Len Hamy, Macquarie University, Australia
  • Added some additional logging to the main bomblab daemon.


  • Fixed a bug that caused to fail when building 32-bit bombs on 64-bit systems. Thanks to Prof. Hugh Lauer, Worcester Polytechnic Institute.


  • Fixed a bug due to hostname on some systems not returning a fully qualified domain name. Thanks to Prof. Hugh Lauer and Taymon Beal, Worcester Polytechnic Institute.
  • Minor updates to the top-level README file.


  • Added a per-semester identifier, called $LABID, to the config file. Instructors can change this variable each term so that the results generated by any bombs from previous offerings of the lab are ignored. Thanks to Prof. Godmar Back, Virginia Tech.


  • Fixed a bug in that could have filled up the filesystem with log messages if the rename operation failed. Thanks to Prof. Godmar Back, Virginia Tech.
  • Modified the "start" rule in Makefile to touch the log.txt file before starting up the lab daemons, so that an empty scoreboard is created initially. Thanks to Prof. Godmar Back, Virginia Tech.


This is a major update of the Bomb Lab:
  • Introduced a new stand-alone, user-level HTTP-based autograding service that hands out custom bombs on demand, tracks bomb explosions and diffusings in real-time on a scoreboard, and serves the scoreboard to browsers.
  • Developed new and updated bomb phases.
  • In, replaced "the cp $srcdir/{f1,f2} target" notation, which some shells don't handle, with the more portable "cp $srcdir/f1 $srcdir/f2 target" form.
  • Made some minor updates to the top-level README file.


  • Rewrote the bomb request daemon, to be more robust and easier for the students to use. The new daemon is based on HTTP, and is extremely simple:
    • Students request a bomb by pointing their Web browser at the host and port number of the request daemon, and then filling out a form with their team member information.
    • The request daemon builds a bomb, packs it up in a tar file, and returns it to the student's Web browser.

    This new version has significant advantages over the previous email based version:

    • Students receive their bombs immediately.
    • Students no longer need to use uudecode to save their bombs.
    • Some email clients apply unexpected encodings to Subject lines that caused the old daemon to miss some requests. This is no longer an issue in the new daemon. Thanks to Prof. Umberto Villano, Universita' del Sannio.
    • The old daemon maintained hard state in the form of disk file containing the number of requests in the spool file that it had responded to. If this file were removed or reset, the daemon would send new bombs to everyone who had previously requested a bomb, and worse, erase its record of the old bombs. This can no longer happen with the new request daemon. Thanks to Prof. Al Davis, Univ of Utah.

  • Made a minor change to the script so that it now includes a README file in each bomb directory identifying the bomb number and the bomb owners.

  • Changed so that it will NOT delete an existing "bombs" directory.

  • Updated the writeup to reflect the new procedure for students to request bombs.

  • The overall way an instructor runs the lab has NOT changed. As before, "make init" intializes the lab, "make start" starts the reporting and request daemons, and "make stop" kills them.


  • The reporting daemon is now more robust when it encounters bogus notification messages in the spool file.


  • Initial release.