Процессор NTVDM столкнулся с незаконной инструкцией

StackOverflow https://stackoverflow.com/questions/348315

  •  20-08-2019
  •  | 
  •  

Вопрос

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

Это отлично работало на 3 машинах XP (одна внутри моей сети, 2 снаружи).Компьютер Vista (имел файл манифеста), но на компьютере моего босса XP (он ИТ-специалист, поэтому знает, что делает) он выдал очень странную ошибку.

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

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

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

использование Системы;использование системы.Коллекции.Общий;использование System.Text;использование системы.IO;

пространство имен testwebservice { класс Program { FileStream theFile = null;StreamWriter writer = нуль;

    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);
        }
    }
}

}

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

Спасибо

Это было полезно?

Решение

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

Я бы также попробовал запустить это в WinDbg, чтобы увидеть, где вы окажетесь, получить стек вызовов после сбоя и т.д., Бьюсь об заклад, вы найдете в стеке странный модуль (шпионское ПО и т.д.).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top