fatal error C1060: compiler is out of heap space (again)
-
@Christian-Ehrlicher
[1] Here's what is displayed in the Compile Output window when I delete the "-nologo" option:Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34810 for x64 Copyright (C) Microsoft Corporation. All rights reserved.Note the "x64".
[2] My .PRO file contains:
contains(QT_ARCH, i386) { message("32-bit" $$QT_ARCH $$QT_VERSION) } contains(QT_ARCH, x86_64) { message("64-bit" $$QT_ARCH $$QT_VERSION) }This is displayed in the Compile Output window:
Project MESSAGE: 64-bit x86_64 6.9.0[3] I tried creating a new Kit and adding a 32-bit compiler. Qt flat out rejected it.
[4] What does the "λ" lambda mean in your example?
When you say "the console where you build your Qt", do you mean the Terminal window in Qt Creator?
When I do that, I get:>where cl INFO: Could not find files for the given pattern(s).I'm using Windows.
@Sprezzatura said in fatal error C1060: compiler is out of heap space (again):
where cl
INFO: Could not find files for the given pattern(s).Again: execute this on the command line where you also compiled your Qt. Execatly where you did 'cl -nologo'
You are using a 32bit compiler which creates 64 bit executables. Or you have very low ram on your system which I doubt. -
In my VS2002 installation there are 4 different cl.exe versions:
c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx86\x86\cl.exe
c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx86\x64\cl.exe
c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x86\cl.exe
c:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.43.34808\bin\Hostx64\x64\cl.exeTwo of them (the ..\Hostx86\x64\cl.exe and the ..\Hostx64\x64\cl.exe will show the same output:
"Microsoft (R) C/C++ Optimizing Compiler Version 19.43.34810 for x64" and both will compile and build 64 bit ..exe files for Qt6.So you have a 50% chance of running the correct compiler, i.e. the cl.exe in the subdirectory ..\Hostx64\x64
-
@Sprezzatura said in fatal error C1060: compiler is out of heap space (again):
where cl
INFO: Could not find files for the given pattern(s).Again: execute this on the command line where you also compiled your Qt. Execatly where you did 'cl -nologo'
You are using a 32bit compiler which creates 64 bit executables. Or you have very low ram on your system which I doubt.@Christian-Ehrlicher I'm not launching this from the command line. I'm using Qt Creator, which automatically creates a stream of commands, including launching cl.exe, followed by a ton of parameters.
The output appears in the "Compile Output" window of the Qt Creator IDE. -
@Sprezzatura said in fatal error C1060: compiler is out of heap space (again):
where cl
INFO: Could not find files for the given pattern(s).Again: execute this on the command line where you also compiled your Qt. Execatly where you did 'cl -nologo'
You are using a 32bit compiler which creates 64 bit executables. Or you have very low ram on your system which I doubt.Good news! It's working!
The solution was to upgrade from VS 2022 ver. 17.13, to ver. 17.14.
I tried getting VS to update itself, but it locked up and wiped itself. I had to download and re-install VS 17.14.Here's the kicker: I got the suggestion from OpenAI/ChatGPT!
I'm an AI skeptic, but I have to give credit where it's due.
Also, ChatGPT suggested "-bigobj", but that didn't make a difference.
A sincere thanks to Christian and hskoglund from a 77-year old, half-blind hack :o)
-
S Sprezzatura has marked this topic as solved on
-
Just as an aside (since I'm a little late to the party): You should turn on C++17 in the .pro file with the line
CONFIG += c++17 -
Just as an aside (since I'm a little late to the party): You should turn on C++17 in the .pro file with the line
CONFIG += c++17@SimonSchroeder I do have that included:
versionAtLeast(QT_VERSION, 6.0.0) { CONFIG += c++17 # Fails with Qt 5.13 QMAKE_CFLAGS += -std:c++17 # required for Qt 6 } -
Interesting update: I got the error again, appearing at random after days of successful compilation.
I terminated Firefox, the problem went away!
-
I occasionally have this problem, too. Here's what I have figured out: The task manager shows memory "in use" and "committed" memory. It's the committed memory that is of importance: Committed memory means that through allocations this amount of memory has been promised to some software, but the corresponding memory pages have not been accessed, yet (which is why memory "in use" can be lower). The reason why this memory is not available is because it was already allocated. This means that committed memory must be available at any time (because it is after allocation the program cannot figure out anymore that it would not have this memory, so it must be there). Once the committed memory is full, nothing works anymore (even when memory "in use" shows that you still have 32 GB left). This is why closing Firefox (which usually uses up a lot of memory) helped. Rebooting your computer also helps.
Basically, "memory in use" is a useless metric in Windows 11. The only thing that matters is committed memory. (You can find programs that use a lot of committed memory if you select "Details" on the left pane of the task manager.)
BTW, does anybody know something like a little widget for Windows 11 that shows committed memory? I would like to have an eye on this. Otherwise Windows will reboot like every other week or so because it ran out of memory (while memory "in use" still shows 32 GB left).
-
I occasionally have this problem, too. Here's what I have figured out: The task manager shows memory "in use" and "committed" memory. It's the committed memory that is of importance: Committed memory means that through allocations this amount of memory has been promised to some software, but the corresponding memory pages have not been accessed, yet (which is why memory "in use" can be lower). The reason why this memory is not available is because it was already allocated. This means that committed memory must be available at any time (because it is after allocation the program cannot figure out anymore that it would not have this memory, so it must be there). Once the committed memory is full, nothing works anymore (even when memory "in use" shows that you still have 32 GB left). This is why closing Firefox (which usually uses up a lot of memory) helped. Rebooting your computer also helps.
Basically, "memory in use" is a useless metric in Windows 11. The only thing that matters is committed memory. (You can find programs that use a lot of committed memory if you select "Details" on the left pane of the task manager.)
BTW, does anybody know something like a little widget for Windows 11 that shows committed memory? I would like to have an eye on this. Otherwise Windows will reboot like every other week or so because it ran out of memory (while memory "in use" still shows 32 GB left).
@SimonSchroeder said in fatal error C1060: compiler is out of heap space (again):
BTW, does anybody know something like a little widget for Windows 11 that shows committed memory? I would like to have an eye on this.
Can't you write this yourself with Qt? :)
-
Interesting update: I got the error again, appearing at random after days of successful compilation.
I terminated Firefox, the problem went away!
@Sprezzatura I had the same problem. I have 3 simultaneous Visual Studio 2022 instances and Firefox with a lot of processes and huge memory usage. Another way to solve this is to limit the number of processors used to compile the solution as it will use less memory due less parallel compilation : Tools > Options > Project and solutions > Compilation and execution > Max number of parallel compilations ---> set it to a lower value.