Is your program crash-safe?

C3 automatically checks a software for potential data loss. More details can be found in the paper. And more documents are pending to be added.

Using C3

To use C3, you just need to provide a manuscript - how to do the initial setup and how to run the program. The rest is as easy as clicking a button. There are samples (validating gzip and emacs) in the subjects directory. If you are intended to validate your own software (say it xyz), create a directory subjects/xyz, and put your manuscript.y in it, then do the following:

  1. If you have not started the c3disk driver yet, you should start it by the following command (root required):

    > ./init
    
  2. Validate xyz by the following command (also requires root):

    > ./validate xyz
    

    C3 either outputs "OK", or prints out an inconsistent crash site.

NOTE: The program contains in-kernel driver whose bug may lead to system crash. We suggest users try it in a virtual machine.

Dependencies:

  1. Kernel: The c3disk driver requires a recent kernel (tested on 4.2). If you are using 3.x, there will be slight modification to the code.
  2. C libraries: libssl-dev (available in repository)
  3. Python libraries: pyautogui (depends on xlib, pil and tk)