-
Bug
-
Resolution: Out of scope
-
Not Evaluated
-
None
-
Qt Creator 7.0.0
-
None
-
Compiler: Microsoft Visual C++ Compiler 16.10.31410.357(amd64)
Debugger: cdb 10.0.22000.194 (x64)
Qt version: 6.2.4
CDB process terminated exceptionally
The CDB crashed after line 60 in Qt Creator


But, In the WinDbg, Everything is OK.

I tried compiling the source codes in Visual Studio 2019, And running it with debug mode, 'Step over' around line 60, Everythings also is OK.
Codes:
#include <Windows.h>
#include <conio.h>
#include <memory>
#include <thread>
#include <string>
#include <functional>
#define __PRETTY_FUNCTION__ __FUNCSIG__
void test3()
{
bool fSuccess;
HANDLE outPipeOurSide = 0, inPipeOurSide = 0;
HANDLE outPipePseudoConsoleSide = 0, inPipePseudoConsoleSide = 0;
PROCESS_INFORMATION pi;
memset(&pi, 0, sizeof(pi));
STARTUPINFOEXW si;
memset(&si, 0, sizeof(si));
si.StartupInfo.cb = sizeof(STARTUPINFOEXW);
do
{
CreatePipe(&inPipePseudoConsoleSide, &inPipeOurSide, NULL, 0);
CreatePipe(&outPipeOurSide, &outPipePseudoConsoleSide, NULL, 0);
HPCON hPC = 0;
if (CreatePseudoConsole(COORD{ 800, 600 }, inPipePseudoConsoleSide, outPipePseudoConsoleSide, 0, &hPC) != S_OK)
{
printf("%s:%d - CreatePseudoConsole failed[%ld]", __PRETTY_FUNCTION__, __LINE__, GetLastError());
break;
}
SIZE_T size;
InitializeProcThreadAttributeList(NULL, 1, 0, &size);
si.lpAttributeList = reinterpret_cast<PPROC_THREAD_ATTRIBUTE_LIST>(new char[size]);
fSuccess = InitializeProcThreadAttributeList(si.lpAttributeList, 1, 0, &size);
if (!fSuccess)
{
printf("%s:%d - InitializeProcThreadAttributeList failed[%ld]", __PRETTY_FUNCTION__, __LINE__, GetLastError());
break;
}
fSuccess = UpdateProcThreadAttribute(
si.lpAttributeList,
0,
PROC_THREAD_ATTRIBUTE_PSEUDOCONSOLE,
hPC,
sizeof(HPCON),
NULL,
NULL);
if (!fSuccess)
{
printf("%s:%d - UpdateProcThreadAttribute failed[%ld]", __PRETTY_FUNCTION__, __LINE__, GetLastError());
break;
}
std::wstring commandline = L"cmd.exe";
fSuccess = CreateProcess(
nullptr,
(wchar_t*)commandline.data(),
nullptr,
nullptr,
TRUE,
EXTENDED_STARTUPINFO_PRESENT,
nullptr,
nullptr,
&si.StartupInfo,
&pi);
if (!fSuccess)
{
printf("!CreateProcessA failed[%ld]", GetLastError());
break;
}
DeleteProcThreadAttributeList(si.lpAttributeList);
printf("done, pid %ld", pi.dwProcessId);
} while (0);
CloseHandle(inPipeOurSide);
CloseHandle(outPipeOurSide);
CloseHandle(inPipePseudoConsoleSide);
CloseHandle(outPipePseudoConsoleSide);
TerminateProcess(pi.hProcess, 0);
WaitForSingleObject(pi.hProcess, -1);
CloseHandle(pi.hProcess);
}
int main(int argc, char* argv[])
{
test3();
return 0;
}