LINUX.ORG.RU

Потестить баг gcc

 ,


1

2

Зарепортил на багзиллу, но вообще не знаю, как долго там это будут изучать и будут ли. А тут парни отзывчивые!

В общем, кому не лень, просьба протестировать баг. Скомпилировать вот этот файл:

http://pastebin.com/QFmRfdQY

Просто g++ file.cpp
Для сравнения можно потом g++ -DNOSWAPBUG file.cpp

Суть в том, что gcc съедает (на реальном проекте) до 16гиг памяти. Сколько на этом тестовом файле, не знаю, т.к. уже при 300 структурах мои домашние гиг памяти плюс гиг свопа заканчиваются. А в тесте структур 2000.

Проявляется на gcc 4.6/4.7, на 4.5 всё ок.

★★★★★

Ты демон, у меня всё зависло %) память сожрало, пошло поедать винт GCC 4.6.3

bhfq ★★★★★
()
Ответ на: комментарий от pylin

Ну там даже main() нет, так что бояться нечего.

queen3 ★★★★★
() автор топика
Ответ на: комментарий от bhfq

Хотел протестить ideone.com, но там всё ок. Возможно, старый gcc.

queen3 ★★★★★
() автор топика

CentOS 6.3 / GCC 4.7.1 самосборный, 1 ГБ ОЗУ, свопа нет.

$ g++ test.cpp 
g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://gcc.gnu.org/bugs.html> for instructions.

$ g++ -DNOSWAPBUG test.cpp 
/usr/lib/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: error: ld returned 1 exit status
На штатном коробочном GCC 4.4.6 всё работает.

d_a ★★★★★
()
Ответ на: комментарий от d_a

Internal compiler error, возможно, отвалился по внутреннему ограничению хипа. Что в лоб, что по лбу, суть одна... Спасибо.

queen3 ★★★★★
() автор топика
.@... ~/temp/cpp_test $ cc --version
Apple clang version 3.1 (tags/Apple/clang-318.0.61) (based on LLVM 3.1svn)
Target: x86_64-apple-darwin11.4.0
Thread model: posix
ak@benedict ~/temp/cpp_test $ c++ test.cpp
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
.@... ~/temp/cpp_test $ gcc --version
i686-apple-darwin11-llvm-gcc-4.2 (GCC) 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.9.00)
Copyright (C) 2007 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

.@... ~/temp/cpp_test $ gcc test.cpp
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
.@... ~/temp/cpp_test $ g++-mp-4.7 --version
g++-mp-4.7 (MacPorts gcc47 4.7.1_1) 4.7.1
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

.@... ~/temp/cpp_test $ g++-mp-4.7 test.cpp

PID    COMMAND      %CPU      TIME     #TH   #WQ  #PORT #MREGS RPRVT  RSHRD  RSIZE  VPRVT  VSIZE  PGRP  PPID  STATE
79912  cc1plus      34.1      01:32.73 1/1   0    27    11131 3206M+ 288K   2744M+ 21G+   24G+   79911 79911 running
79911  g++-mp-4.7   0.0       00:00.00 1     0    18    36    244K   260K   840K   19M    2385M  79911 79879 sleeping

.@... ~/temp/cpp_test $ g++-mp-4.7 -DNOSWAPBUG test.cpp
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status


.@... ~/temp/cpp_test $ g++-mp-4.6 --version
g++-mp-4.6 (MacPorts gcc46 4.6.3_3) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

.@... ~/temp/cpp_test $ g++-mp-4.6 test.cpp

PID    COMMAND      %CPU      TIME     #TH   #WQ  #PORT #MREGS RPRVT  RSHRD  RSIZE  VPRVT  VSIZE  PGRP  PPID  STATE
79928  cc1plus      30.8      00:57.40 1     0    27    14031+ 3223M- 288K   2957M- 14G+   16G+   79927 79927 sleeping
79927  g++-mp-4.6   0.0       00:00.00 1     0    18    35     132K   260K   624K   19M    2384M  79927 79879 sleeping

.@... ~/temp/cpp_test $ g++-mp-4.6 -DNOSWAPBUG test.cpp
Undefined symbols for architecture x86_64:
  "_main", referenced from:
      start in crt1.10.5.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status

.@.. ~/temp/cpp_test $ g++ --version
g++ (Gentoo Hardened 4.5.3-r2 p1.1, pie-0.4.7) 4.5.3
Copyright (C) 2010 Free Software Foundation, Inc.
Это свободно распространяемое программное обеспечение. Условия копирования
приведены в исходных текстах. Без гарантии каких-либо качеств, включая
коммерческую ценность и применимость для каких-либо целей.

.@.. ~/temp/cpp_test $ g++ test.cpp
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../lib64/Scrt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: выполнение ld завершилось с кодом возврата 1

Все правильно.

clang, (llvm-)gcc-4.2, gcc-4.5 — работают,

gcc-4.6, gcc-4.7 — без дефайна выжирают память.

ien
()

gcc 4.2 всё работает быстро

Zorn
()

4.7.1, баг воспроизводится.

geekless ★★
()

g++ (GCC) 4.7.0 20120507 (Red Hat 4.7.0-5)

Процесс g++ выжрал 7 ГБ памяти, дальше ждать я не стал и прибил его. С -DNOSWAPBUG просто ругнулось на отсутствие main, как и ожидалось.

Relan ★★★★★
()
Ответ на: комментарий от yurikoles

Ты в комментах там напиши, это важно.

queen3 ★★★★★
() автор топика
Ответ на: комментарий от DELIRIUM

Что-то разработчикам он до сих пор не показался интересным...

queen3 ★★★★★
() автор топика

g++ (Debian 4.7.1-2) 4.7.1 Выжрал всю память и полез на диск с соответствующими тормозами.

Batja
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.