How Kernel Developers Bypass Compiler Bugs: An Empirical Study
收藏资源简介:
Data Release for "Bypassing Compiler Bugs in OS Kernels" This archive contains the data and scripts used by the current version of the paper "How Kernel Developers Bypass Compiler Bugs: An Empirical Study". The package focuses on URL-linked compiler bug workaround commits in OS kernel repositories. It does not include the source code of the project website. Scope of the Dataset The dataset links compiler bug reports to OS workaround commits when the commit messages explicitly mention GCC or LLVM bug report URLs. This design provides reliable and reproducible traceability between compiler bugs and downstream kernel maintenance actions. The dataset characterizes traceable compiler bug workarounds rather than all compiler bug workarounds in OS kernels. The current release contains 530 links between compiler bug reports and OS workaround commits. These links are used by RQ1, RQ2, and RQ4. For RQ3, this release contains the recollected data that compares reproducing programs in compiler bug reports with the kernel code before workaround commits. This is the RQ3 setting used in the current paper. Archive Structure data/core/: link-level metadata shared by the research questions. data/rq1/: data for compiler bug reporter analysis. data/rq2/: data for workaround latency analysis. data/rq3/: recollected data for reproducing programs and pre-commit kernel code. data/rq4/: data and statistical summaries for workaround characteristics. scripts/extraction/: scripts and query used to collect URL-linked workaround commits. scripts/rq3/: scripts used to collect code and analyze similarity. scripts/rq4/: scripts used to collect modification lines and analyze RQ4. README.md: detailed description of all files in the release. Core Data data/core/more_info.xlsx: link-level metadata for 530 links. It includes bug IDs, projects, commit IDs, authors, reporters, symptoms, URLs, report dates, commit dates, latency, compiler source, and whether the compiler bug reporter and workaround author are treated as the same person. data/core/table_data_highlighted.xlsx: link-level metadata with commit URLs. data/core/table_data.csv and data/core/unique_table_data.csv: original summary tables used by the website version of the artifact. RQ1: Compiler Bug Reporters data/rq1/RQ1.xlsx: raw data for the reporter analysis. It contains 530 links. In this file, Same = 1 means the compiler bug reporter and workaround author are treated as the same person. Same = 2 means they are treated as different people. The current data contain 202 same-person links and 328 different-person links. Therefore, 328/530 = 61.9% of the links are different-person links. RQ2: Workaround Latency data/rq2/RQ2.xlsx: raw latency data for 530 links. It includes report dates, commit dates, and time intervals. This is the main RQ2 data file. data/rq2/RQ2-all.xlsx: derived data used to draw the cumulative distribution function plots for all links, same-person links, and different-person links. RQ3: Reproducing Programs and Pre-Commit Kernel Code The RQ3 data in this release are the recollected data used by the current paper. The analysis compares reproducing programs from compiler bug reports with kernel source files before the corresponding workaround commits. data/rq3/sample_before_similarity_results_token6.xlsx: final similarity results with minimum tile length k = 6. data/rq3/sample_before_similarity_results_token6_with_keywords.xlsx: final similarity results with compiler bug symptom labels. data/rq3/token6_statistics.csv: summary data used in the RQ3 figure and finding. It contains 339 file-level comparisons. Among them, 271 have zero maximal similarity and 68 have non-zero maximal similarity. data/rq3/token6_non_zero.csv: non-zero similarity values used for box plots. data/rq3/jplag_processing_report.json: processing report for the JPlag run with k = 6. This file keeps the original manual notes and is therefore not strict machine-readable JSON. data/rq3/extracted_commits/: recollected code data. Each folder corresponds to one compiler bug and workaround commit pair. The folders contain reproducing programs, pre-commit kernel files, post-commit kernel files, patches, and commit metadata. data/rq3/sample_code/: collected reproducing programs, grouped into reduced/ and unreduced/. RQ4: Characteristics of Workarounds data/rq4/RQ4.xlsx: main RQ4 data for 530 links. It contains added lines, deleted lines, total modified lines, affected components, and compiler bug symptoms. data/rq4/component_modification_tests.csv: derived statistical test results. It reports Mann-Whitney U test results with Holm correction and Cliff's delta for Development, Libraries, and Kernel Core. data/rq4/RQ4_symptom_component_summary.csv: derived commit counts grouped by compiler bug symptom and OS component. data/rq4/RQ4_symptom_component_summary_distribution.csv: derived distribution data used for grouped RQ4 plots. Scripts scripts/extraction/Extract_tool.py: identifies commits that mention compiler bug report URLs. scripts/extraction/commit_related_to_compiler_bug.sql: query related to commit collection. scripts/rq3/fetch_commit_code.py: collects before and after versions of modified files. scripts/rq3/process_jplag.py: runs the syntax similarity analysis. scripts/rq3/analyze_similarity_results.py: extracts final similarity values. scripts/rq3/add_keywords_to_results.py: adds compiler bug symptom labels to RQ3 results. scripts/rq3/match_and_highlight.py and scripts/rq3/RQ3.m: support highlighted examples and plotting for RQ3. scripts/rq4/RQ4_get_modification_lines.py: collects added and deleted lines from workaround commits. scripts/rq4/analyze_rq4.py and scripts/rq4/component_modification_tests.py: produce RQ4 summaries and statistical tests. Excluded Files The release intentionally excludes files that are not part of the current paper data package: Website source files. Local environment and cache files, such as .git/, .venv/, __pycache__/, .DS_Store, and *.pyc. The old RQ3 files anonymous/assets/RQ3.xlsx and anonymous/assets/RQ3_codeset.zip, because they use the old RQ3 setting. The token3 RQ3 results, because the current paper uses minimum tile length k = 6. Large intermediate JPlag output directories. The final result tables and input source files are included. The JPlag jar file, because it is a third-party binary. Release Checks RQ1: 530 records; 202 same-person links and 328 different-person links. RQ2: 530 records. RQ3: 339 file-level comparisons; 271 zero-similarity cases and 68 non-zero-similarity cases. RQ4: 530 records. The archive excludes old RQ3 data and local environment files.



