Problema:

Problema:

Problema:

Hace aproximadamente una semana, el NTVDM en una instalación de XP se rompió.

Síntomas:

El primer síntoma fue que un ejecutable de 16 bits que se ejecuta durante un archivo por lotes de ejecución automática se bloqueaba y fijaba la CPU al 100% hasta que ntvdm.exese eliminaba, momento en el cual el archivo por lotes continúa ejecutándose (aunque sin el trabajo que realizó el ejecutable). se supone que lo hizo). El siguiente síntoma fue que un ejecutable diferente de 16 bits que se ejecutaba como parte de un script de apagado por lotes se bloqueaba, provocando que el script fallara.

Curiosamente lo hacena vecestrabajo (~30%). En otras palabras, si se ejecuta un programa (desde elCorrerdialog) 10 veces, es posible que se ejecute correctamente entre 2 y 4 veces y se cuelgue el resto del tiempo. Esto ocurre principalmente con programas más simples que imprimen algo o algo así, a diferencia de programas más complicados con interfaces de usuario como edit.como command.comque parecensiemprecolgar. Algunos programas seleccionados que son extremadamente simples (por ejemplo, crlf.com: 578 bytes, ret.com: 1 byte, etc.)siempreParece correr y regresar sin problema.

Pruebas:

Algunas pruebas muestran que el problema está en el propio NTVDM y no sólo en los ejecutables específicos (que de todos modos funcionaron bien hasta hace poco). Por ejemplo, ejecutar edit.comabre una consola y muestra el editor, pero no responde al teclado y debe cerrarse. De hecho, ni siquiera correr command.comfuncionará; abre una consola y muestra el mensaje y luego se queda ahí, sin responder.

Revisé todos los archivos NTVDM relacionados (y muchos otros archivos del sistema operativo) y todos son correctos. También verifiqué varios registros completos relacionados y todos verificaron también. Los programas funcionan bien en otras instalaciones de XP (lo cual no es una sorpresa ya que command.comfuncionan edit.comtambién); Entonces es esa máquina específica. El entorno no ha cambiado desde que NTVDM dejó de funcionar, pero lo comprobé de todos modos y no hay nada abiertamente problemático; tempy tmpapunta a directorios existentes sin nombres LFN, sin variables rotas con valores nulos o similares, y aunque es pathlargo, lo ha sido durante algún tiempo.

Archivos verificados:ntd*, ntv*, dos*, redir.exe, Mscdexnt.exe, *.sys

Enteros registrales verificados: *\Software\Microsoft\Command processor, *ControlSet*\Control\WoW,*\Software\Microsoft\Windows NT\CurrentVersion\WOW*


Las aplicaciones NTVDM y de 16 bits funcionan bien en modo seguro en la máquina en cuestión; Sólo en modo normal se cuelgan.

Pregunta:

¿Alguien puede pensar en algo que pueda romper el NTVDM de una manera que produzca estos síntomas?


(Para ser claro; NO es el error común"La CPU NTVDM ha encontrado una instrucción ilegal".Además, no sugiera el uso de Dosbox u otro software de VM porque no es aplicable y, además, los programas en cuestión funcionaron antes, sin mencionar que los propios programas de 16 bits de Windows no funcionarán).

información relacionada