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;