make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3
I was using GCC on Windows recently for an embedded project, and discovered that I couldn't use "make" to build my projects. It always failed with the cryptic error:
make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3)
Searches on the internet suggested that there is a bug in "make" that causes it to crash when the path to the GCC executables contain "(" or ")". With a 64-bit version of windows (such as the one that I'm using), GCC is installed to "C:\Program Files (X86)\" by default. So, I reinstalled it to a directory without spaces or parentheses, and it still failed. At this point further searches proved futile.
The problem lies with the way that the PATH environment variable works. When "make" (or any other application) searches for a command in PATH, it starts by looking at the first directory that is listed in the PATH environment variable for that command. If it does not find it there, then it moves on to the next directory in the list, and so on, until it either finds the command that it is looking for, or runs out of directories to search. This means that any directory in the PATH with parentheses that occurs before the directory containing the GCC executables will cause "make" to fail. By default, the installer will add the directory to the end of the list. Thus, shifting the directory containing the GCC executables to the start of the list, solved the problem.
Working Around the Make Bug
This particular bug in the "make" tool can be worked around by doing the following:
- In the Windows control panel, open "System," and click on the advanced tab,
- Click on the "environment variables" button,
- In "System variables" edit the "Path" variable; move the directory containing the GCC executables to the front of the path list,
- Click "OK," and then "OK" again (in the main window of "System Properties"), and
- Reboot the machine to make sure that the updated path variable is used.
Articles » Windows Development » make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4217b3