Процессор NTVDM обнаружил недопустимую инструкцию - PullRequest
0 голосов
/ 08 декабря 2008

Я столкнулся с довольно странной ошибкой, которую я не понимаю. Я создал консольное приложение C #, которое было разработано для того, чтобы просто проверить, работает ли мой веб-сервис за пределами моей сети. Все, что он делал, это пытался подключиться к веб-сервису, выводить каждый этап на консоль и записывать его в текстовый файл, чтобы они могли присылать мне журналы.

Отлично работало на 3 компьютерах с ХР (одна внутри моей сети, две вне). Машина с Vista (имела файл манифеста), но на моей машине с боссами XP (он ИТ-специалист, который знает, что делает), она выдавала очень странную ошибку.

C: \ Temp \ testwe ~ 1.exe ЦП NTVDM обнаружил недопустимую инструкцию

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

Я немного погуглил, и казалось, что его NTVDM мог быть неисправен, или был вирус или что-то в этом роде. Ни один из них, кажется, не имеет место. Я не могу понять, что могло бы стать причиной такого сбоя.

с использованием системы; using System.Collections.Generic; используя System.Text; используя System.IO;

namespace testwebservice { Программа класса { 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);
        }
    }
}

}

Я очень застрял, почему приведенный выше код может / будет делать это. Это как раз то, что я хочу знать, и отчасти, может ли это произойти с реальной клиентской машиной, или просто заражена моя машина боссов или что-то в этом роде.

Спасибо

1 Ответ

1 голос
/ 08 декабря 2008

Что-то очень не так, если вы попадаете в NTVDM, так как это 16-битный уровень эмуляции DOS для XP. Если это произойдет снова после того, как вы скопируете EXE-файл, я изучу программное обеспечение, установленное на компьютере вашего босса (версия платформы .NET и т. Д.).

Я бы также попробовал запустить это в WinDbg, чтобы увидеть, где вы оказались, получить стек вызовов, когда он выйдет из строя, и т.д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...