Problema:

Problema:

Problema:

Cerca de uma semana atrás, o NTVDM em uma instalação do XP quebrou.

Sintomas:

O primeiro sintoma era que um executável de 16 bits executado durante um arquivo em lote de execução automática travaria e travaria a CPU em 100% até ntvdm.exeser eliminado, momento em que o arquivo em lote continuaria em execução (embora sem o trabalho que o executável foi deveria ter feito). O próximo sintoma era que um executável diferente de 16 bits executado como parte de um script em lote de desligamento seria interrompido, causando falha no script.

Curiosamente, eles fazemàs vezestrabalho (~30%). Em outras palavras, se um programa for executado (a partir doCorrercaixa de diálogo) 10 vezes, ele pode ser executado corretamente cerca de 2 a 4 vezes e travar no resto do tempo. Isso ocorre principalmente com programas mais simples que imprimem algo ou algo semelhante, em oposição a programas mais complicados com UIs como edit.comou command.comque parecemsemprependurar. Alguns programas selecionados que são extremamente simples (por exemplo,: crlf.com578 bytes,: ret.com1 byte, etc.)sempreparecem correr e retornar sem problemas.

Testes:

Alguns testes mostram que o problema está no próprio NTVDM e não apenas nos executáveis ​​específicos (que funcionavam bem até recentemente). Por exemplo, executar edit.comabre um console e exibe o editor, mas não responde ao teclado e deve ser eliminado. Na verdade, mesmo correr command.comnão funciona; ele abre um console e mostra o prompt e fica parado, sem responder.

Verifiquei todos os arquivos NTVDM relacionados (e vários outros arquivos do sistema operacional) e todos estão corretos. Também verifiquei vários registros de registro relacionados e todos eles também foram verificados. Os programas funcionam bem em outras instalações do XP (o que não é uma surpresa, pois command.comtambém edit.comfuncionam); então é aquela máquina específica. O ambiente não mudou desde que o NTVDM parou de funcionar, mas verifiquei mesmo assim e não há nada abertamente problemático; tempe tmpapontam para diretórios existentes sem nomes LFN, sem variáveis ​​quebradas com nulos ou algo assim, e embora seja pathlongo, já existe há algum tempo.

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

Inteiros do registro verificados: *\Software\Microsoft\Command processor, *ControlSet*\Control\WoW,*\Software\Microsoft\Windows NT\CurrentVersion\WOW*


Os aplicativos NTVDM e de 16 bits funcionam bem no modo de segurança na máquina em questão; é apenas no modo normal que eles travam.

Pergunta:

Alguém consegue pensar em algo que possa quebrar o NTVDM de uma maneira que produza esses sintomas?


(Para ser claro; NÃO é o erro comum“A CPU NTVDM encontrou uma instrução ilegal.”Além disso, não sugira o uso do Dosbox ou outro software VM porque isso não é aplicável e, além disso, os programas em questão funcionaram antes, sem mencionar que os programas de 16 bits do próprio Windows não funcionarão.)

informação relacionada