marca: interrupción / excepción capturada


33

Estoy usando Make de la distribución MinGW. Siempre ha funcionado, pero recientemente recibí el siguiente error:

> make clean
make: Interrupt/Exception caught (code = 0xc0000005, addr = 0x0040b0ac)

Y la parte respectiva se ve así:

clean:
    del /S /Q *.o > nul
    del /S /Q *.cy.c > nul
    del /S /Q *.pyc > nul
    del /S /Q *.pyo > nul
    if EXIST build (rmdir /S /Q dist > nul)

No tengo idea de qué causa esto. Especialmente porque siempre ha funcionado perfectamente bien.


1
¿Has intentado actualizar make? gnu.org/software/make
Fabián Heredia Montiel

Respuestas:


46

Estaba empezando a tener una excepción también:

make: Interrupt/Exception caught (code = 0xc00000fd, addr = 0x4227d3)

Podría ser una razón diferente, pero este problema es aparentemente causada cuando la variable PATH contiene paréntesis (, )como lo hace en Windows Vista / 7. Desafortunadamente, el GNU disponible para Windows está irremediablemente desactualizado.

Mi problema se solucionó forzando a makeusar el shell correcto: inserte la siguiente línea al comienzo de su archivo MAKE.

SHELL=C:/Windows/System32/cmd.exe

Gran solución, pero no sé por qué no estaba funcionando, no tengo paréntesis en mis variables de entorno
forsubhi

1
¿Podría estar relacionado con la duración de la RUTA también? En mi caso, mi RUTA ya tenía muchos paréntesis sin ningún problema (hasta que instalé algunas cosas más); reemplazar todas las instancias de C:\Program Filescon C:\PROGRA~1y C:\Program Files (x86)con C:\PROGRA~2solucionó el problema para mí. +1 :-)
Cameron

También tuve este problema, y ​​cambié a una versión más nueva de make: equation.com/servlet/equation.cmd?fa=make - Esto no solucionó el problema, pero maneja mejor la excepción y te dice lo que está sucediendo: sh: C:\Program: No such file or directoryes la primera línea que obtengo si no paso la SHELLvariable. Básicamente, cada instancia de "Archivos de programa" en la RUTA contiene un espacio que no se escapa correctamente (en lo que respecta a la marca). No es la longitud del camino, sino los espacios los que causan este problema. Esto explica por qué usar una macro sin espacios lo arregló.
Johannes

Esta solución funcionó para mí.
Robert Stiffler

8

Tuve ese problema cuando agregué el directorio bin de Git a la PATHvariable de entorno. La razón parece ser que Git se envía con una versión de MSYS y parece estar en conflicto con MinGW (tal vez no entre en conflicto cuando es la versión correcta de MSYS y / o MinGW, pero eso es solo adivinar).

Así que asegúrese de que no haya (otra) distribución de MSYS en su PATH.


1
¡La ruta de Git al directorio bin fue el problema para mí! Bien hecho !
TridenT

3

Además de la respuesta de Norbet P., descubrí que agregar:

PATH=

en la parte superior de mi Makefile solucionó este problema en particular para mí.


1
No estoy dando un -1, pero esta es una respuesta horriblemente mala. ¡No puedes simplemente restablecer la RUTA! esta es una muy mala práctica! algunas veces la compilación del programa depende de la información en PATH.
The Quantum Physicist


2

Utilicé GnuWin hasta que me di cuenta de que el último lanzamiento se publicó en 26 de noviembre de 2006 . Eso es un poco aburrido y causó problemas como se ve arriba. La configuración de SHELL = C: /Windows/System32/cmd.exe resuelve algunos problemas, pero ejecutar ese código antiguo en sistemas operativos nuevos se siente inseguro

MinGw es una apuesta más segura. MinGw es el acrónimo de "Minimalist GNU for Windows" y está actualizado e incluye make y otras herramientas

http://sourceforge.net/projects/mingw/files/


1
¿Leíste la pregunta?
orlp

1

El código de error de Windows 0xC0000005indica una infracción de acceso o un fallo de segmentación.

  • ¿Está dañada su instalación de MinGW?
  • ¿Su sistema está configurado correctamente? ¿Ha cambiado alguna configuración del sistema recientemente?
  • ¿Hay problemas de hardware en su sistema? Es posible que deba escanear el disco duro con CHKDSK o realizar una prueba de memoria como Memtest86 + .

-1

Noté en mis registros de compilación que "SHELL = sh" se estaba pasando a hacer, a pesar de que estoy en la plataforma de Windows. Mi Makfile se veía así:

ifneq (, $ (findtring win, $ (RDI_PLATFORM))) SHELL = CMD endif

Una vez que comenté el ifneq y terminé, comenzó a funcionar. No estoy seguro de por qué la plataforma no se interpretó correctamente.


1
Esta no es una respuesta a la pregunta original. Para criticar o solicitar una aclaración de un autor, deje un comentario debajo de su publicación; siempre puede comentar sus propias publicaciones y, una vez que tenga suficiente reputación , podrá comentar cualquier publicación .
DavidPostill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.