Pregunta

He encontrado un error bastante extraño que no entiendo. Creé una aplicación de consola C # que fue diseñada para ser solo una prueba para ver si mi servicio web funcionaba desde fuera de mi red. Todo lo que hizo fue intentar conectarse al servicio web, enviar cada etapa a la consola y escribirla en un archivo de texto para que pudieran enviarme los registros.

Funcionó perfectamente en 3 máquinas XP (una dentro de mi red, 2 fuera). Una máquina Vista (tenía un archivo de manifiesto) pero en mi máquina XP de jefes (él es un tipo de TI, así que sabe lo que está haciendo), arrojó un error muy extraño.

C: \ temp \ testwe ~ 1.exe La CPU NTVDM ha encontrado una instrucción ilegal

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

Busqué en Google y parecía que su NTVDM podría haber sido molestado, o que había un virus o algo así. Ninguno de estos parece ser el caso. No puedo ver qué sucedería para que esto falle de tal manera.

usando el sistema; usando System.Collections.Generic; usando System.Text; usando System.IO;

servicio de prueba de espacio de nombres {     Programa de clase     {         FileStream theFile = null;         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);
        }
    }
}

}

Estoy muy atrapado por qué el código anterior podría / haría esto. Es algo que solo quiero saber y, en parte, podría sucederle a una máquina de un cliente real, o simplemente si la máquina de mi jefe está infectada o algo así.

Gracias

¿Fue útil?

Solución

Algo está muy mal si terminas en NTVDM, ya que esta es la capa de emulación DOS de 16 bits para XP. Si esto sucede nuevamente después de volver a copiar el EXE, investigaría el software instalado en la PC de su jefe (versión de marco .NET, etc.).

También intentaría ejecutar esto en WinDbg para ver dónde termina, obtener una pila de llamadas una vez que falla, etc., apuesto a que encontrará un módulo extraño en la pila (spyware, etc.).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top