[Bug c/85704] New: cc1 run out of memory memory when it compile
haruue at caoyue dot com.cn
gcc-bugzilla@gcc.gnu.org
Tue May 8 18:33:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85704
Bug ID: 85704
Summary: cc1 run out of memory memory when it compile
Product: gcc
Version: 8.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: haruue at caoyue dot com.cn
Target Milestone: ---
Created attachment 44089
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44089&action=edit
The output of strace
I run out of memory when I try to build linux-usermode 4.16.7 with gcc 8.1.0.
* The operation to reproduce the problem:
wget http://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.tar.xz
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/patch-4.16.7.xz
tar -Jxf linux-4.16.tar.xz
xz -d patch-4.16.7.xz
cd linux-4.16/
patch -p1 -i ../patch-4.16.7
make ARCH=um defconfig
ulimit -m 1500000 -v 1500000
make ARCH=um
Then, when it compiles the arch/um/drivers/ubd_kern.c, GCC got into stuck and
exhausts 1.5GB memory in little time.
* Source code of arch/um/drivers/ubd_kern.c in linux kernel tree:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/arch/um/drivers/ubd_kern.c
* The actual command invoked is following:
gcc -Wp,-MD,arch/um/drivers/.ubd_kern.o.d \
-nostdinc \
-isystem \
/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.0/include \
-I./arch/um/include \
-I./arch/um/include/generated \
-I./include \
-I./arch/um/include/uapi \
-I./arch/um/include/generated/uapi \
-I./include/uapi \
-I./include/generated/uapi \
-include \
./include/linux/kconfig.h \
-D__KERNEL__ \
-m64 \
-I./arch/x86/um \
-I./arch/x86/include \
-I./arch/x86/include/uapi \
-I./arch/x86/include/generated \
-I./arch/x86/include/generated/uapi \
-Wall \
-Wundef \
-Wstrict-prototypes \
-Wno-trigraphs \
-fno-strict-aliasing \
-fno-common \
-fshort-wchar \
-Werror-implicit-function-declaration \
-Wno-format-security \
-std=gnu89 \
-fno-PIE \
-mcmodel=large \
-fno-builtin \
-m64 \
-funit-at-a-time \
-D__arch_um__ \
-I./arch/um/include/shared \
-I./arch/x86/um/shared \
-I./arch/um/include/shared/skas \
-Dvmap=kernel_vmap \
-Dlongjmp=kernel_longjmp \
-Dsetjmp=kernel_setjmp \
-Din6addr_loopback=kernel_in6addr_loopback \
-Din6addr_any=kernel_in6addr_any \
-Dstrrchr=kernel_strrchr \
-D_LARGEFILE64_SOURCE \
-Derrno=kernel_errno \
-Dsigprocmask=kernel_sigprocmask \
-Dmktime=kernel_mktime \
-fno-delete-null-pointer-checks \
-Wno-frame-address \
-Wno-format-truncation \
-Wno-format-overflow \
-Wno-int-in-bool-context \
-Os \
-Wno-maybe-uninitialized \
--param=allow-store-data-races=0 \
-DCC_HAVE_ASM_GOTO \
-Wframe-larger-than=1024 \
-fno-stack-protector \
-Wno-unused-but-set-variable \
-Wno-unused-const-variable \
-fno-omit-frame-pointer \
-fno-optimize-sibling-calls \
-fno-var-tracking-assignments \
-g \
-Wdeclaration-after-statement \
-Wno-pointer-sign \
-fno-strict-overflow \
-fno-merge-all-constants \
-fmerge-constants \
-fno-stack-check \
-fconserve-stack \
-Werror=implicit-int \
-Werror=strict-prototypes \
-Werror=date-time \
-Werror=incompatible-pointer-types \
-Werror=designated-init \
-Wno-packed-not-aligned \
-DKBUILD_BASENAME='"ubd_kern"' \
-DKBUILD_MODNAME='"ubd"' \
-c -o \
arch/um/drivers/ubd_kern.o \
arch/um/drivers/ubd_kern.c;
I feel sorry because I know little about gcc implementation. I attached the
strace output of above gcc command. It seem that gcc just mmap more and more
memory before memory run out.
And everything is OK in GCC 7.3.1.
Is this a bug of gcc or just some problem in the kernel code?
More information about the Gcc-bugs
mailing list