Language agnostic 你曾经使编译器崩溃过吗?

Language agnostic 你曾经使编译器崩溃过吗?,language-agnostic,compiler-construction,crash,Language Agnostic,Compiler Construction,Crash,每个人(至少每个使用编译语言的人)都会遇到编译错误,但您实际会使编译器崩溃多少次 我有过相当多的“内部编译器错误”,但大多数错误都是通过重新编译而消失的。你有一个(最小的)代码会破坏编译器吗?< /p> 是的,尤其是当它是一个旧的或欠维护的编译器(GCC 2.95,C++模式下的Tendra)。虽然我不保留代码块,但是 我编写了我们使用的编译器,所以有时会崩溃。在C++编译时,如果模板使用被弄乱了, VC++会崩溃。( )我在C编译器编译中看到了一些编译器错误(所有的边缘情况,所有的报告都是适

每个人(至少每个使用编译语言的人)都会遇到编译错误,但您实际会使编译器崩溃多少次


我有过相当多的“内部编译器错误”,但大多数错误都是通过重新编译而消失的。你有一个(最小的)代码会破坏编译器吗?< /p> 是的,尤其是当它是一个旧的或欠维护的编译器(GCC 2.95,C++模式下的Tendra)。虽然我不保留代码块,但是

我编写了我们使用的编译器,所以有时会崩溃。在C++编译时,如果模板使用被弄乱了,

VC++会崩溃。(

)我在C编译器编译中看到了一些编译器错误(所有的边缘情况,所有的报告都是适当的)。并证实了一些由其他人引发的车祸


我遇到的最可怕的编译器错误(某种程度上)是某个版本的Java中的JIT错误。这是相当可再生的,但导致虚拟机下降。添加了一个完全没有op的语句(我记不清是什么了——可能只是用一个初始值声明了一个额外的局部变量)将它从任何角落移走了,并且在以后的版本中得到了修复。

。一些Delphi版本(比如说#4)经常会崩溃,并出现一些神秘的错误消息

较新的版本(2006年及以上)是稳定的,但不是坚如磐石。(在这种情况下,7是很好的)

编译器崩溃通常发生在复杂项目(大量dll)的大型编辑和调试会话中。大多数情况下,重新启动ide就足够了。但有时你需要重新启动电脑

O和我曾经因为交换文件太大而使OS2与编译器一起崩溃。

Actionscript 3.0:

switch(on_some_variable)
{
}

空开关=Kaboom容易

// -*- C++ -*-

template <int n>
class Foo : public Foo<n+1>
{

};

int main(int, char*[])
{
    Foo<0> x;
    return 0;
};


ejgottl@luna:~/tmp$ g++ -ftemplate-depth-1000000 -Wall foo.cpp -o foo
g++: Internal error: Segmentation fault (program cc1plus)
Please submit a full bug report.
See `<URL:http://gcc.gnu.org/bugs.html>` for instructions.
For Debian GNU/Linux specific bug reporting instructions, see
`<URL:file:///usr/share/doc/gcc-4.2/README.Bugs>`.
<代码> //-*-C++ 模板 Foo类:公共Foo { }; int main(int,char*[]) { 富x; 返回0; }; ejgottl@luna:~/tmp$g++-ftemplate-depth-1000000-Wall foo.cpp-o foo g++:内部错误:分段故障(程序cc1plus) 请提交完整的错误报告。 有关说明,请参见。 有关Debian GNU/Linux特定的bug报告说明,请参阅 ``.
> p> VC现在优雅地捕捉它,但是在90年年中,微软C++和Borland C++编译器都会崩溃:

struct MyClass
{
    MyClass operator->() { return *this; }
};


int main(int argc, char* argv[])
{
    MyClass A;
    A->x;
}

重载运算符->本质上是递归的。函数将返回一个指针,oper->将再次应用于该指针。这个片段使代码生成无限递归

有一次,当我使用Python文档中的生成器示例时,它破坏了我们使用的Python版本。同一周,我的一个同事设法滥用FFI,使得任何涉及3号的计算都会崩溃Python。

< P>在我正在从事的项目中,表达式的某些特定用法会使Visual C++编译器崩溃。(我们使用的是Visual Studio 2003)
编译器只会在发布版本中崩溃,调试版本可以正常工作

关于lambda库的正确使用,团队中爆发了一场宗教战争,我几乎很感激编译器为我们解决了这个问题。:-)

我还没有使GHC(Haskell编译器)崩溃,但我用一个


这很容易解决,除非你有一些棘手的(通常是错误的)设计,否则你不会碰到这个问题,但它可能是有史以来最好的编译器错误消息。

微软Xbox 360编译器很容易崩溃。我收到了带有日文注释的源代码,当转换成常规文本时,行中最后的一个字符是“\”,因此它将注释继续到下一行。如果下一行是switch命令,则编译器崩溃

//wierd japanese characters here %^$$\
switch(n)
{
case 0:
    .....
break;
case 1:
    .....
break;
}

在Mono C#编译器的1.2.x版本中,复杂的代码(如果我没记错的话,嵌套匿名委托)会导致编译器崩溃。幸运的是,在2.x版本中,我没有看到任何崩溃。

在我以前的工作中,我们有一个模拟器,它以能够使(ICE)编译器崩溃或导致它们生成错误代码而臭名昭著。当代码真正正确生成时,编译器通常会花15分钟来处理单个源文件。VisualStudio(只要我在那里工作)就永远无法编译模拟器核心

核心是从DSL自动生成的,生成的代码通常会将编译器推向极限


升级到新版本的GCC通常会引起广泛的不安:新版本会工作吗?

我已经多次使Delphi7崩溃,要求它编译遗留的dos代码

罪魁祸首似乎是对系统单元中的某些内容的任何限定。这并不总是会让它崩溃,但当它在这样的东西上崩溃时,我会仔细查看并重写任何需要这样重写的东西,问题就消失了

放大是100%可复制的,但我从来没有设法制作一个简单的测试用例。大多数情况下,它实际上不会使编译器崩溃,您通常会得到一个与问题无关的错误,可能有数百行。环境不稳定,保存和退出是可以的,但不要想做任何其他事情


早在石器时代,使用Borland Pascal 7(最后一个dos版本)时,我就多次打破了它。没有碰撞,只是错误和不一致的代码发射。我终于学会了将.EXE(不包括调试信息)保持在3mb以下。我做得越远,它就越不稳定。

我已经多次崩溃VC++了,通常是使用模板代码。但这不是最有趣的车祸

我使用/analyze选项编译我的共享代码库,使VS2005团队系统编译器崩溃,该代码库在没有开关的情况下编译时没有错误,在VS2008上有开关和没有开关时都崩溃。当然,MS对此不太感兴趣,因为这是旧版本编译器中的一个bug,但我认为它非常有趣。

这使编译器崩溃
//wierd japanese characters here %^$$\
switch(n)
{
case 0:
    .....
break;
case 1:
    .....
break;
}
PRINT 0 + "" +- 0
------ Build started: Project: pdfp, Configuration: Debug Win32 ------
Compiling...
reader.cpp
xref.cpp
c:\projects\pdfp\xref.cpp(52) : fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\cxxfe\sl\p1\c\toil.c', line 8569)
 To work around this problem, try simplifying or changing the program near the locations listed above.
Please choose the Technical Support command on the Visual C++ 
 Help menu, or open the Technical Support help file for more information
Generating Code...
Build log was saved at "file://c:\Projects\pdfp\Debug\BuildLog.htm"
pdfp - 1 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
 template<typename Res, typename T>
 Res operator_cast(const T& t)
 {
     return t.operator Res();
 }

 int main()
 {
    return operator_cast<int>(0);
 }
typdef struct kGUIColor GameColor;

c:\source\kgui\samples\space\space.cpp(35) : fatal error C1001: INTERNAL COMPILER ERROR
        (compiler file 'msc1.cpp', line 2708) 
         Please choose the Technical Support command on the Visual C++ 
         Help menu, or open the Technical Support help file for more information
struct PATTERN {
  …
};
    typedef int SOMETHINGOROTHER;
    struct SOMETHINGOROTHER {};
    struct SOMETHINGOROTHER {};
    typedef int SOMETHINGOROTHER;
struct{
  char myvalue:1;
}mystruct;
typedef map<int,int> Tmap;
private: Tmap; * m_map;