Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

test_limiter_node SIGSEGV with forced LTO #686

Closed
phprus opened this issue Dec 15, 2021 · 9 comments
Closed

test_limiter_node SIGSEGV with forced LTO #686

phprus opened this issue Dec 15, 2021 · 9 comments
Labels

Comments

@phprus
Copy link
Contributor

phprus commented Dec 15, 2021

Commit: 0815661

phprus@phprus:~> gcc-7 -v
Using built-in specs.
COLLECT_GCC=gcc-7
COLLECT_LTO_WRAPPER=/usr/lib64/gcc/x86_64-suse-linux/7/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 --enable-offload-targets=hsa,nvptx-none, --without-cuda-driver --enable-checking=release --disable-werror --with-gxx-include-dir=/usr/include/c++/7 --enable-ssp --disable-libssp --disable-libvtv --disable-libcc1 --disable-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-version-specific-runtime-libs --with-gcc-major-version-only --enable-linker-build-id --enable-linux-futex --enable-gnu-indirect-function --program-suffix=-7 --without-system-libunwind --enable-multilib --with-arch-32=x86-64 --with-tune=generic --build=x86_64-suse-linux --host=x86_64-suse-linux
Thread model: posix
gcc version 7.5.0 (SUSE Linux) 

Release

CMake:

CC=gcc-7 CXX=g++-7 cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_CXX_STANDARD=17 -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON ../..
phprus@phprus:~/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/build/gcc7-lto> ./gnu_7.5_cxx17_64_release/test_limiter_node
[doctest] doctest version is "2.4.6"
[doctest] run with "--help" for options
===============================================================================
/home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:556:
TEST CASE:  Test continue_msg reception

/home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:556: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal

===============================================================================
[doctest] test cases:     2 |     1 passed | 1 failed | 7 skipped
[doctest] assertions: 73888 | 73888 passed | 0 failed |
[doctest] Status: FAILURE!
Ошибка сегментирования (стек памяти сброшен на диск)
phprus@phprus:~/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/build/gcc7-lto> gdb ./gnu_7.5_cxx17_64_release/test_limiter_node core.test_limiter_no.2507
GNU gdb (GDB; openSUSE Leap 15.2) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./gnu_7.5_cxx17_64_release/test_limiter_node...
[New LWP 2507]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./gnu_7.5_cxx17_64_release/test_limiter_node'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f0290244013 in _Unwind_Resume () from /lib64/libgcc_s.so.1
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.26-lp152.26.9.1.x86_64 libgcc_s1-debuginfo-10.2.1+git583-lp152.4.1.x86_64 libstdc++6-debuginfo-10.2.1+git583-lp152.4.1.x86_64
(gdb) bt
#0  0x00007f0290244013 in _Unwind_Resume () from /lib64/libgcc_s.so.1
#1  0x0000000000420572 in test_continue_msg_reception() ()
#2  0x0000000000421802 in doctest::Context::run() ()
#3  0x000000000040b96e in main ()
(gdb) 

RelWithDebInfo

CMake:

CC=gcc-7 CXX=g++-7 cmake -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_STANDARD=17 -DCMAKE_INTERPROCEDURAL_OPTIMIZATION=ON ../..
phprus@phprus:~/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/build/gcc7-lto-rwd> ./gnu_7.5_cxx17_64_relwithdebinfo/test_limiter_node
[doctest] doctest version is "2.4.6"
[doctest] run with "--help" for options
===============================================================================
/home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:556:
TEST CASE:  Test continue_msg reception

/home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:556: FATAL ERROR: test case CRASHED: SIGSEGV - Segmentation violation signal

===============================================================================
[doctest] test cases:     2 |     1 passed | 1 failed | 7 skipped
[doctest] assertions: 73888 | 73888 passed | 0 failed |
[doctest] Status: FAILURE!
Ошибка сегментирования (стек памяти сброшен на диск)
phprus@phprus:~/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/build/gcc7-lto-rwd> gdb ./gnu_7.5_cxx17_64_relwithdebinfo/test_limiter_node core.test_limiter_no.12757
GNU gdb (GDB; openSUSE Leap 15.2) 10.1
Copyright (C) 2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-suse-linux".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://bugs.opensuse.org/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./gnu_7.5_cxx17_64_relwithdebinfo/test_limiter_node...
[New LWP 12757]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Core was generated by `./gnu_7.5_cxx17_64_relwithdebinfo/test_limiter_node'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007fe4dad2a013 in _Unwind_Resume () from /lib64/libgcc_s.so.1
Missing separate debuginfos, use: zypper install glibc-debuginfo-2.26-lp152.26.9.1.x86_64 libgcc_s1-debuginfo-10.2.1+git583-lp152.4.1.x86_64 libstdc++6-debuginfo-10.2.1+git583-lp152.4.1.x86_64
(gdb) bt
#0  0x00007fe4dad2a013 in _Unwind_Resume () from /lib64/libgcc_s.so.1
#1  0x00000000004219e2 in test_continue_msg_reception () at /home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:316
#2  0x00000000004219f9 in _DOCTEST_ANON_FUNC_96() [clone .lto_priv.89] () at /home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/tbb/test_limiter_node.cpp:557
#3  0x0000000000419022 in doctest::Context::run (this=this@entry=0x7ffddc1fb908) at /home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/common/doctest.h:6586
#4  0x000000000040b8be in main (argc=<optimized out>, argv=<optimized out>) at /home/phprus/devel/oneTBB/oneTBB-0815661e4c08e4fcaf772d31c1313c63d629a32e/test/common/doctest.h:6671
(gdb) 

gcc-8,9,10 - without errors.

@anton-potapov
Copy link
Contributor

@phprus is it correct that latest master (0815661) is used ?

@phprus
Copy link
Contributor Author

phprus commented Dec 15, 2021

@anton-potapov
Yes.
Segfault is present ​only is LTO enabled for tests and only on GCC-7.

In the discussion of PR #647, I did not check build with LTO enabled.

@anton-potapov
Copy link
Contributor

@vlserov could you please take a look ?

@phprus
Copy link
Contributor Author

phprus commented Dec 16, 2021

Microsoft Visual Studio 2017, 2019, x86 and x64 - all test passed.

@vlserov
Copy link

vlserov commented Dec 17, 2021

@phprus, issue is not related to #647.
Tried to use TBB_ENABLE_IPO=ON instead of CMAKE_INTERPROCEDURAL_OPTIMIZATION=ON, all test are passed.
CMAKE_INTERPROCEDURAL_OPTIMIZATION adds IPO flags to tests as well.

@phprus
Copy link
Contributor Author

phprus commented Dec 17, 2021

@vlserov,
Yes, segfault is present only if IPO is enabled for tests.

@vlserov
Copy link

vlserov commented Dec 23, 2021

Tested on v2021.3 release with LTO Enable patch, issue is present.
Issue appears with GCC 7.5 and flags "-O1 -fdevirtualize -fipa-cp", and it doesn't with only "-O1" flag.
It isn't reproduced with GCC 8.1. Possible, some optimization options are conflicted with LTO.

@phprus
Copy link
Contributor Author

phprus commented Mar 5, 2022

Maybe close the issue, since the error is not reproduced on gcc-8 and newer?

@isaevil
Copy link
Contributor

isaevil commented Oct 5, 2022

Closing since the error is not reproduced on gcc-8 and newer.

@isaevil isaevil closed this as completed Oct 5, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants