Lessons in Troubleshooting: Blender: Not Enough Video Memory
Mar 21, 2021
Recently I was helping someone troubleshoot an issue a user was having with the freeware 3D software Blender. While the solution wound up being simple, it turned out to be an excellent lesson in creative troubleshooting while systematically working through a problem. We can touch on my Gregory House M.D. approach to computer troubleshooting, gather information, check your preconceived notions, use the scientific method, users lie (often times unintentionally). It is also another DeverCoder9 situation where there are a few posts online with the exact same error, but this solution was not mentioned. If you are just looking for the solution, you can skip to the end.
To paint the scene, another technician had just installed a new graphics card in a user’s computer. Initial testing went fine and there were no apparent issues. The next day though, the user complained that Blender was crashing. Due to current restrictions the tech was troubleshooting remotely and did not want to go in person. I was called in to help the other tech.
As an initial step we defined the problem and made educated guesses as to what the cause may be. As a technical description, whenever the user would start Blender, a small grey box would come up, then close. No further error or Windows crash report, so I classified it as a force close instead of a crash. Other graphics software seemed fine. Given that the GPU was just changed, the proximal cause seems to be an issue with the GPU. The obvious first thought is to change the GPU, but this didn’t fit with all the symptoms. Other software seems to be working fine and there was no Windows crash, this would imply that it’s not a fundamental issue with the GPU or hardware, but something localized to Blender specifically.
The first theory was that there was a setting in Blender that had become incompatible with the new GPU. It was also determined that the version of Blender being used was installed from the Microsoft Store, instead of the normal MSI installer. It was decided to try and get the user to a known good configuration, by removing the currently installed version, removing configuration files, and performing a fresh install.
After doing a complete reinstall of Blender though, the problem persisted in exactly the same way. We had now come to a troublesome, yet common situation in troubleshooting; our best guess was wrong, and we were left with guessing and shotgun troubleshooting. We were left at replacing the GPU as an option, but it still didn’t fit all the facts. So instead of immediately preceding we decided to spend some time trying to gather more information.
Since the problem was a hard close without an error at program start, we were not working with a lot of information and didn’t even have a good error to google. At this point I was tempted to reach for ProcMon to see what the software was doing at startup, but ProcMon is difficult to interpret and the signal to noise it generates is tough. So I decided to do “log spelunking” which is where you don’t know where or if the program makes a log file, but you can guess a few locations to look for them. So, we looked in the most common places, Program Data, AppData Local, AppData Roaming, Temp, and then the Program Files folder of the app. In the Program Files folder for Blender we found blender_debug_log.cmd. Finally, we could get some information! We ran it, Blender force closed again, and we were presented with a log.
Here is a similar result from reddit:
C:\Program Files (x86)\Steam\steamapps\common\Blender>blender.exeGPUTexture: create : TEXTURE_1D, RGBA8, w : 1, h : 0, d : 0, comp : 4, size : 0.00 MiBGPUTexture: texture alloc failed. Likely not enough Video Memory.Current texture memory usage : 0.00 MiB.GPUTexture: create : TEXTURE_2D, RGBA8, w : 1, h : 1, d : 0, comp : 4, size : 0.00 MiBGPUTexture: texture alloc failed. Likely not enough Video Memory.Current texture memory usage : 0.00 MiB.GPUTexture: create : TEXTURE_3D, RGBA8, w : 1, h : 1, d : 1, comp : 4, size : 0.00 MiBGPUTexture: texture alloc failed. Likely not enough Video Memory.Current texture memory usage : 0.00 MiB.found bundled python: C:\Program Files (x86)\Steam\steamapps\common\Blender\2.82\pythonGPUTexture: create : TEXTURE_2D, RGBA8, w : 3234, h : 39, d : 0, comp : 4, size : 0.48 MiBGPUTexture: texture alloc failed. Likely not enough Video Memory.Current texture memory usage : 0.48 MiB.GPUTexture: create : TEXTURE_2D, R8, w : 16384, h : 256, d : 0, comp : 1, size : 4.00 MiBError : EXCEPTION_ACCESS_VIOLATIONAddress : 0x00007FF65D3DB573Module : C:\Program Files (x86)\Steam\steamapps\common\Blender\blender.exe
The bit that caught my eye was MiBGPUTexture: texture alloc failed. Likely not enough Video Memory.
This I plugged into google and found some forum posts where people had the same issue, and tried various things but there was no obvious cause or fix.
It seemed we were back where we started, except now Blender was blaming the GPU VRAM. We were just about to go ahead and change out the GPU, but I decided to do a few last things. And here we come to some good principals to help with troubleshooting.
Check the basics, don’t take anything for granted. Often users will provide faulty or inaccurate information, it’s not their fault or malicious, they just don’t know what to say or do. Also as technicians we can become fixated with the problem in front of us and overlook the basics ourselves.
Perform quick no consequence checks and fixes before long complex ones. Sometimes we go straight to the solutions we have in mind even if they are hard or cause user inconvenience, this is things like reimaging a computer or removing a user profile. But if you have any other ideas or possibilities that are quick to try or that don’t have any consequences, even if it seems unlikely try those first.
So I took another look at the error log. What was subtle in there was that the program couldn’t allocate any video memory. Not even half a megabyte on a 4 GB graphics card! Now if it were truly a hardware issue this would make the computer unusable or it would crash when loading large files, not blank ones. Hardware seemed very unlikely, but the program was having issues talking to the GPU, like it was confused somehow.
I did one simple check, it would have been obvious, except we were doing this remotely. I asked the user “what ports are your computer monitors plugged into?” And there was the solution, the use had one monitor plugged into the dedicated GPU and another plugged into the onboard video of the PC. After plugging both into the GPU Blender worked fine.
I hope you enjoyed this little story. Maybe you learned something or maybe you just got a chuckle out of it. Either way, feel free to drop me a line if you found it helpful!