VirtualBox

Opened 5 years ago

Last modified 5 years ago

#19052 new defect

split of the soapC.cpp file triggers internal GCC 9+ bug

Reported by: Frank Batschulat (Oracle) Owned by:
Component: webservices Version: VirtualBox 6.0.14
Keywords: soapC.cpp gcc Cc:
Guest type: other Host type: other

Description (last modified by Frank Batschulat (Oracle))

The split of the soapC.cpp file triggers an apparent internal bug in GCC 9+ Disabling the split makes the compilation succeed:

/home/ws/vbtrunk/trunk/out/linux.amd64/debug/obj/webservice/soapC-1.cpp: In function ‘int soap_putelement(soap*, const void*, const char*, int, int)’:
/home/ws/vbtrunk/trunk/out/linux.amd64/debug/obj/webservice/soapC-1.cpp:19905: internal compiler error: in subspan, at input.h:68
19905 | SOAP_FMAC3 int SOAP_FMAC4 soap_putelement(struct soap *soap, const void *ptr, const char *tag, int id, int type)
      | 
Please submit a full bug report,
with preprocessed source if appropriate.
See <http://bugzilla.redhat.com/bugzilla> for instructions.
Preprocessed source stored into /tmp/cc6m3qIX.out file, please attach this to your bugreport.
kmk: *** [/home/ws/vbtrunk/trunk/kBuild/footer-pass2-compiling-targets.kmk:277: /home/ws/vbtrunk/trunk/out/linux.amd64/debug/obj/vboxsoap/gen/webservice/soapC-1.o] Error 1

Build system details that saw this bug:

1) Fedora 32 (Workstation Edition) Rawhide

$ uname -a ; gcc -v
Linux oradesk 5.4.0-0.rc4.git3.1.fc32.x86_64 #1 SMP Thu Oct 24 13:28:33 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/9/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,objc,obj-c++,ada,go,d,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=i686 --build=x86_64-redhat-linux
Thread model: posix
gcc version 9.2.1 20190827 (Red Hat 9.2.1-1) (GCC) 

2) OpenSuse Tumbleweed:

Linux hpbox 5.2.8-1-default #1 SMP Fri Aug 9 17:51:51 UTC 2019 (bf37e83) x86_64 x86_64 x86_64 GNU/Linux
CPE_NAME="cpe:/o:opensuse:tumbleweed:20190814"
gcc -v
Using built-in specs.
COLLECT_GCC=cc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/9/lto-wrapper
OFFLOAD_TARGET_NAMES=hsa:nvptx-none
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,ada,go,d --enable-offload-targets=hsa,nvptx-none=/usr/nvptx-none, --without-cuda-driver --disable-werror --with-gxx-include-dir=/usr/include/c++/9 --enable-ssp --disable-libssp --disable-libvtv --disable-cet --disable-libcc1 --enable-plugin --with-bugurl=https://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --with-slibdir=/lib64 --with-system-zlib --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-libphobos --enable-version-specific-runtime-libs --with-gcc-major-version-only --enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function --program-suffix=-9 --without-system-libunwind --enable-multilib --with-arch-32=x86-64 --with-tune=generic --with-build-config=bootstrap-lto-lean --enable-link-mutex --build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
gcc version 9.1.1 20190723 [gcc-9-branch revision 273734] (SUSE Linux) 

3) OpenSuse Tumbleweed:

Linux hpbox 5.3.7-1-default #1 SMP Mon Oct 21 06:03:17 UTC 2019 (3eea5a9) x86_64 x86_64 x86_64 GNU/Linux
gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/9/lto-wrapper
OFFLOAD_TARGET_NAMES=hsa:nvptx-none
Target: x86_64-suse-linux
Configured with: ../configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man --libdir=/usr/lib64 --libexecdir=/usr/lib64 --enable-languages=c,c++,objc,fortran,obj-c++,ada,go,d --enable-offload-targets=hsa,nvptx-none=/usr/nvptx-none, --without-cuda-driver --disable-werror --with-gxx-include-dir=/usr/include/c++/9 --enable-ssp --disable-libssp --disable-libvtv --disable-cet --disable-libcc1 --enable-plugin --with-bugurl=https://bugs.opensuse.org/ --with-pkgversion='SUSE Linux' --with-slibdir=/lib64 --with-system-zlib --enable-libstdcxx-allocator=new --disable-libstdcxx-pch --enable-libphobos --enable-version-specific-runtime-libs --with-gcc-major-version-only --enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function --program-suffix=-9 --without-system-libunwind --enable-multilib --with-arch-32=x86-64 --with-tune=generic --with-build-config=bootstrap-lto-lean --enable-link-mutex --build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
gcc version 9.2.1 20190903 [gcc-9-branch revision 275330] (SUSE Linux) 

### sledgehammer Workaround in LocalConfig.kmk
### disable webservices build with:

VBOX_WITH_WEBSERVICES :=

Text string: soapC-1.cpp

  File         Line
0 Makefile.kmk 245 $(VBOXWEB_OUT_DIR)/soapC-1.cpp \
1 Makefile.kmk 812 $(VBOXWEB_OUT_DIR)/soapC-1.cpp \

from: trunk/src/VBox/Main/webservice/Makefile.kmk

236   ifdef VBOX_WITHOUT_SPLIT_SOAPC
237    vboxsoap_SOURCES = \
238         $(VBOXWEB_OUT_DIR)/soapC.cpp
239   else
240    BLDPROGS += split-soapC
241    split-soapC_TEMPLATE = VBoxBldProg
242    split-soapC_SOURCES = split-soapC.cpp
243 
244    vboxsoap_SOURCES = \
245         $(VBOXWEB_OUT_DIR)/soapC-1.cpp \
246         $(VBOXWEB_OUT_DIR)/soapC-2.cpp \
[..]
807 ifndef VBOX_WITHOUT_SPLIT_SOAPC
808 #
809 # Split up the soapC.cpp monster into manageable bits that can be
810 # built in parallel and without exhausting all available memory.
811 #
812 $(VBOXWEB_OUT_DIR)/soapC-1.cpp \
813 + $(VBOXWEB_OUT_DIR)/soapC-2.cpp \
814 + $(VBOXWEB_OUT_DIR)/soapC-3.cpp \
815 + $(VBOXWEB_OUT_DIR)/soapC-4.cpp \
[...]
841 : $(VBOXWEB_OUT_DIR)/soapC.cpp $$(split-soapC_1_TARGET) | $$(dir $$@)
842         $(RM) -f -- $(wildcard $(VBOXWEB_OUT_DIR)/soapC-?.cpp $(VBOXWEB_OUT_DIR)/soapC-??.cpp)
843         $(split-soapC_1_TARGET) $(VBOXWEB_OUT_DIR)/soapC.cpp $(VBOXWEB_OUT_DIR) 29
844 endif # !VBOX_WITHOUT_SPLIT_SOAPC

### disabling the split works reasonably well and compiles
### successfully on a 16GB memory/12 cpu cores system and
### on a 16GB memory/2 CPUs system despite the comment.

$ cat LocalConfig.kmk

VBOX_WITHOUT_SPLIT_SOAPC := 1

Change History (1)

comment:1 by Frank Batschulat (Oracle), 5 years ago

Description: modified (diff)
Note: See TracTickets for help on using tickets.

© 2023 Oracle
ContactPrivacy policyTerms of Use