Pergunta

Eu encontrei um erro bastante estranho que eu não entendo. Eu criei um aplicativo de console C # que foi projetado para ser apenas um teste para ver se o meu serviço web estava trabalhando do lado de fora da minha rede. Tudo o que fiz foi tentar conectar-se ao webservice, saída de cada etapa para o console e gravá-lo em um arquivo de texto para que eles pudessem me enviar os logs.

Ele funcionou perfeitamente em 3 máquinas XP (um dentro da minha rede, 2 fora). máquina A Vista (tinha um arquivo de manifesto), mas na minha máquina XP chefes (ele é um cara de TI de modo sabe o que está fazendo), ele jogou um erro muito estranho.

C: \ temp \ testwe ~ 1.exe A CPU NTVDM encontrou uma instrução ilegal

http://www.houseofhawkins.com/roger.jpg ">

Eu fiz algum googling e parecia que o NTVDM pode ter sido arruinado, ou havia um vírus ou algo assim. Nenhum deles parece ser o caso. Eu não posso ver o que estaria acontecendo para causar esta a falhar de tal forma.

using System; utilizando System.Collections.Generic; usando System.Text; usando System.IO;

namespace TestWebService { Programa classe { FileStream theFile = nulo; StreamWriter writer = null;

    static void Main(string[] args)
    {
        Program p = new Program();
        p.testMe();
    }

    private void testMe()
    {
        Console.WriteLine("Entered main method about to create stream");            
        try
        {
            theFile = File.Create(@"jonTestWebService.log");
            writer = new StreamWriter(theFile);
            writer.AutoFlush = true;

            try
            {
                message("Starting test at: " + DateTime.Now.ToLongTimeString());

                Random rand = new Random();

                message("creating new instance of webservice");
                houseofhawkins.testweb webServ = new testwebservice.houseofhawkins.testweb();

                message("calling hello world");
                String helloResult = webServ.HelloWorld();
                message("hello world result = " + helloResult);

                int one = rand.Next(999);
                int two = rand.Next(999);
                message("calling maths method with " + one + " + " + two);
                String mathResult = webServ.mytestMethod(one, two);
                message("Math result is: " + mathResult);



                message("Creating instance of CSJawbreaker");
                CSJawbreaker.InformationService csj = new testwebservice.CSJawbreaker.InformationService();

                message("trying to get the latest version number");
                float version = csj.latestVersionNumber();
                message("Version number: " + version.ToString());

                message("");
                message("Finished all processing at: " + DateTime.Now.ToLongTimeString());
            }
            catch (Exception ex)
            {
                writer.WriteLine("");
                writer.WriteLine(ex.Message);
                writer.WriteLine("");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine("could not create stream Writer, " + ex.Message);
        }

        message("");
        message("Press return to exit");
        Console.ReadLine();

        writer.Close();
        theFile.Close();
    }

    private void message(String message)
    {
        if (theFile != null && writer != null)
        {
            Console.WriteLine(message);
            writer.WriteLine(message);
        }
    }
}

}

Estou muito preso porque o código acima poderia / iria fazer isso. É uma espécie de apenas Eu quero saber e, em parte, isso poderia acontecer com uma máquina de clientes reais, ou apenas é minha máquina chefes infectado ou algo assim.

Obrigado

Foi útil?

Solução

Algo está muito errado se você acabar em NTVDM, pois esta é a camada de emulação DOS 16-bit para o XP. Se isso acontecer novamente depois de voltar a copiar o EXE toda, eu investigar o software instalado no PC do seu chefe (versão do framework .NET, etc).

Eu também tente executar isso em WinDbg para ver onde você acabar, ter uma pilha de chamadas, uma vez ele faltas fora etc, eu aposto que você vai encontrar um módulo estranho na pilha (spyware, etc).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top