Details
-
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
Description
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; }