57段讓編譯器崩潰的C語言程式碼

黃利民發表於2012-04-05

導讀:本文由猶他州大學的計算機系的 John Regehr 整理。

雖然我不清楚到底有多少人喜歡看讓編譯器崩潰的程式,但這篇文章就是給這些的人(包括我)。我們討論編譯器Bug測試案例的論文就包括很多這種崩潰型的Bug。下文是就是這些 C 語言程式碼段,由工具逐字輸出,程式碼格式上肯定會有些問題。(程式碼段後面申明瞭對應被崩潰的編譯器,有讀者問為什麼沒有 MSVC 編譯器的,Regehr 回覆說他們並沒有測試MSVC 。)

看完這些程式,我們就能總結出什麼東西嗎?這很難說…… 很多 C 語言程式碼段是不容易看出來有問題,如果瞭解其中問題,我們需要知道一個特定編譯器內部解析程式碼的細節。

C1 : Crashes Clang 2.6 at -O0:

C2 : Crashes Clang 2.6 at -O2:

C3 : Crashes Clang 2.6 at -O2:

C4 : Crashes Clang 2.6 at -O3:

C5 : Crashes Clang 2.6 at -O2:

C6 : Crashes Clang 2.6 at -O0:

C7 : Crashes Clang 2.6 at -O1:

C8 : Crashes Clang 2.6 at -O1:

C9 : Crashes Clang 2.6 at -O2:

C10 : Crashes Clang 2.6 at -O1:

C11 : Crashes Clang 2.7 at -O1:

C12 : Crashes Clang 2.7 at -O0:

C13 : Crashes Clang 2.7 at -O2:

C14 : Crashes GCC 3.2.0 at -O1:

C15 : Crashes GCC 3.2.0 at -O3:

C16 : Crashes GCC 3.2.0 at -O3:

C17 : Crashes GCC 3.2.0 at -O2:

C18 : Crashes GCC 3.2.0 at -O1:

C19 : Crashes GCC 3.2.0 at -O3:

C20 : Crashes GCC 3.3.0 at -O3:

C21 : Crashes GCC 3.4.0 at -O3:

C22 : Crashes GCC 3.4.0 at -O3:

C23 : Crashes GCC 4.0.0 at -O2:

C24 : Crashes GCC 4.0.0 at -O2:

C25 : Crashes GCC 4.0.0 at -O0:

C26 : Crashes GCC 4.0.0 at -O1:

C27 : Crashes GCC 4.0.0 at -O0:

C28 : Crashes GCC 4.0.0 at -O2:

C29 : Crashes GCC 4.1.0 at -O1:

C30 : Crashes GCC 4.1.0 at -O1:

C31 : Crashes GCC 4.1.0 at -O2:

C32 : Crashes GCC 4.1.0 at -O1:

C33 : Crashes GCC 4.1.0 at -O1:

C34 : Crashes GCC 4.1.0 at -O3:

C35 : Crashes GCC 4.2.0 at -O1:

C36 : Crashes GCC 4.2.0 at -O1:

C37 : Crashes GCC 4.3.0 at -O1:

C38 : Crashes GCC 4.3.0 at -O2:

C39 : Crashes GCC 4.3.0 at -O3:

C40 : Crashes GCC 4.3.0 at -O1:

C41 : Crashes GCC 4.3.0 at -O3:

C42 : Crashes Intel CC 12.0.5 at -O1:

C43 : Crashes Open64 4.2.4 at -O3:

C44 : Crashes Open64 4.2.4 at -O3:

C45 : Crashes Open64 4.2.4 at -O3:

C46 : Crashes Open64 4.2.4 at -O2:

C47 : Crashes Open64 4.2.4 at -O3:

C48 : Crashes Open64 4.2.4 at -O3:

C49 : Crashes Open64 4.2.4 at -O3:

C50 : Crashes Sun CC 5.11 at -xO4:

C51 : Crashes Sun CC 5.11 at -fast:

C52 : Crashes Sun CC 5.11 at -xO4:

C53 : Crashes Sun CC 5.11 at -fast:

C54 : Crashes Sun CC 5.11 at -xO0:

C55 : Crashes Sun CC 5.11 at -xO3:

C56 : Crashes Sun CC 5.11 at -xO4:

C57 : Crashes Sun CC 5.11 at -fast:

 

英文原文:John Regehr     編譯:伯樂線上 – 黃利民

【如需轉載,請標註並保留原文連結、譯文連結和譯者等資訊,謝謝合作!】

 

相關文章