[Bug libstdc++/86155] New: std::thread
rebel at ameritech dot net
gcc-bugzilla@gcc.gnu.org
Thu Jun 14 17:10:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86155
Bug ID: 86155
Summary: std::thread
Product: gcc
Version: 8.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: rebel at ameritech dot net
Target Milestone: ---
Successful Compiler Build:
mingw-w64-v5.0.4:
../src/mingw-w64-libraries/winpthreads/configure --build=x86_64-w64-mingw32
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32
--prefix=/c/temp/gcc/dest/x86_64-w64-mingw32
--with-sysroot=/c/temp/gcc/dest/x86_64-w64-mingw32 --disable-shared
make -j4 -O all "CFLAGS=-s -O3"
../src/configure --build=x86_64-w64-mingw32 --host=x86_64-w64-mingw32
--target=x86_64-w64-mingw32 --disable-lib32
--prefix=/c/temp/gcc/dest/x86_64-w64-mingw32
--with-sysroot=/c/temp/gcc/dest/x86_64-w64-mingw32 --enable-wildcard
make -j4 -O all "CFLAGS=-s -O3"
gcc 8.1.0:
../src/configure --enable-languages=c,c++ --build=x86_64-w64-mingw32
--host=x86_64-w64-mingw32 --target=x86_64-w64-mingw32 --disable-multilib
--prefix=/c/temp/gcc/dest --with-sysroot=/c/temp/gcc/dest
--disable-libstdcxx-pch --disable-libstdcxx-verbose --disable-nls
--disable-shared --disable-win32-registry --with-arch=native
--enable-threads=posix --enable-libgomp
make -j4 -O S bootstrap "CFLAGS=-g0 -O3" "CXXFLAGS=-g0 -O3"
"CFLAGS_FOR_TARGET=-g0 -O3" "CXXFLAGS_FOR_TARGET=-g0 -O3" "BOOT_CFLAGS=-g0 -O3"
"BOOT_CXXFLAGS=-g0 -O3"
Windows 10 (sandybridge CPU) Mutli-threaded C++ program compiles with GCC8.1.1
but crashes with a segmentation fault.
Same program compiles and runs successfully with GCC7.3 and with gcc version
8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
test program source code:
#include <iostream>
#include <windows.h>
#include <thread>
#include <chrono>
void function_1()
{
for (int i = 0; i != 4; i++)
{
std::cout << "Function 1 i = "
<< i << std::endl;
std::chrono::milliseconds(1000);
}
}
void function_2()
{
for (int j = 0; j != 4; j++)
{
std::cout << " Function 2 j = "
<< j << std::endl;
std::chrono::milliseconds(500);
}
}
int wmain()
{
std::thread thread_1(function_1);
std::thread thread_2(function_2);
thread_1.join();
thread_2.join();
return 0;
}
Compiles with GCC 8.1.1 and GCC 7.3:
g++ -DUNICODE -D_DEBUG -DWIN32_LEAN_AND_MEAN -D_CRT_SECURE_NO_DEPRECATE -O0 -Og
-ggdb -Wall -c -fmessage-length=0 -Wno-unknown-pragmas -o HelloWorld.o
"..\\HelloWorld.cpp"
g++ -municode -mwindows -o thread.exe HelloWorld.o
When program runs successfully(GCC7.3)
Function 1 i = 0
Function 1 i = 1
Function 1 i = 2
Function 1 i = 3
Function 2 j = 0
Function 2 j = 1
Function 2 j = 2
Function 2 j = 3
When Program Crashes(GCC 8.1.1):
Segmentation fault
More information about the Gcc-bugs
mailing list