Skip to content

Latest commit

 

History

History
118 lines (62 loc) · 4.47 KB

artifact-data.md

File metadata and controls

118 lines (62 loc) · 4.47 KB

Artifact data

Running instructions in README.md will download the following content on a public server at Purdue:

  • pmc.tar.gz which stores the PMC cluster data collected in our experiments.
  • testsuite.tar.gz which contains the prerequisite for Snowboard.
  • gcc-5.4.0.gz which is the source code of GCC-5.4.0. We use this compiler to compile the code of Snowboard.
  • redis.tar.gz which is the source code of Redis 6.2.4. We Use Redis service to distribute generated concurrent inputs.

In addition, it also downloads the source code of Linux 5.12-rc3 from Github.com. We use them for analyzing and debugging.

Understanding the artifact data

data/

data/pmc contains all the PMC clusters which were identified in Linux 5.12-rc3 in our experiments.

Specifically, it should have the following files:

cd data/pmc
$ ll
total 9.8G
drwxrwxr-x 2 sishuai sishuai 4.0K Aug 20 02:17 ./
drwxrwxr-x 3 sishuai sishuai 4.0K Aug 20 16:38 ../
-rw-r--r-- 1 sishuai sishuai 6.8G Aug 20 02:05 mem-dict-2021-03-27-14-47-44
-rw-rw-r-- 1 sishuai sishuai 1.8G Aug 19 12:47 uncommon-channel.txt
-rw-rw-r-- 1 sishuai sishuai 138M Aug 19 12:45 uncommon-double-read-channel.txt
-rw-rw-r-- 1 sishuai sishuai  19M Aug 19 12:47 uncommon-ins-pair.txt
-rw-rw-r-- 1 sishuai sishuai 856K Aug 19 12:45 uncommon-ins.txt
-rw-rw-r-- 1 sishuai sishuai  78M Aug 19 12:45 uncommon-mem-addr.txt
-rw-rw-r-- 1 sishuai sishuai 369M Aug 19 12:45 uncommon-object-null-channel.txt
-rw-rw-r-- 1 sishuai sishuai 673M Aug 19 12:44 uncommon-unaligned-channel.txt

First, mem-dict-2021-03-27-14-47-44 is a Python pickle object that encodes all the shared memory accesses we observed in our experiments and it can be used to reproduce uncommon-XXX.txt files. However, considering that reproducing them takes large amount of memory (~500GB), we include the raw PMC files we generated.

In the next, we explain the data format of each file:

  • uncommon-channel.txt

    Each line in this file represents a unique PMC-channel cluster and shows its corresponding clustering key as well as cluster size:

    insw addrw bytew insr addrr byter cluster-size

    Each feature is separated by a space and please refer to Section 4.1 in the paper for the meaning of it.

    Taking the first line in uncommon-channel.txt as an example:

    0xc1b7161a 0xfc6523b4 4 0xc1b001ee 0xfc6523b4 4 1
    

    It means there is only 1 full PMC that has these features therefore belonging to this cluster.

  • uncommon-double-read-channel.txt

    Each line in this file represents a unique PMC double-fetch channel cluster and shows its corresponding key as well as cluster size:

    insw addrw bytew insr addrr byter df_leader cluster-size

  • uncommon-ins-pair.txt

    Each line represents a unique instruction pair cluster and shows its key as well as cluster size:

    insw insr cluster-size

  • uncommon-ins.txt

    Each line represents a unique instruction cluster and shows its key as well as cluster size:

    Ins-addr ins-type cluster-size

    To differentiate write and read instructions, we introduce another feature ins-type. 0 means the instruction is a write and 1 indicates it is a read.

  • uncommon-mem-addr.txt

    Each line represents a unique memory object cluster and shows its key as well as cluster size:

    addrw addrr bytew byter cluster-size

  • uncommon-object-null-channel.txt

    Each line represents a unique object-nullification channel and shows its key as well as cluster size:

    insw addrw bytew insr addrr byter cluster-size

  • uncommon-unaligned-channel.txt

    Each line represents a unique unaligned channel and shows its key as well as cluster size:

    insw addrw bytew insr addrr byter cluster-size

testsuite/

testsuite/ contains the prerequisite for the tool. Specifically, it has:

  • testsuite/image : a virtual machine image and a virtual machine snapshot
  • testsuite/input : a set of kernel sequential test inputs generated by Syzkaller.
  • testsuite/kernel: a compiled Linux kernel image of 5.12-rc3, which we used for concurrency testing. In addition, it also has vmlinux.map and vmlinux.onlydisas that help debugging (e.g mapping every instruction address to the source code it belongs to).

code/vmm contains the source code of our tool.code/tools stores the source code of gcc-5.4.0 as well as scripts to compile it. Our tool will be compiled by gcc-5.4.0.code/scripts provides a set of scripts to deploy this tool to analyze and test kernels.