Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: 1 2 [Все]   Вниз
  Печать  
Автор Тема: Что значит "Privileged instruction."  (Прочитано 46691 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« : 28-11-2006 12:55 » 

VC 7.0 из 2003 го интерпрайза 

Проект АТЛ модуля, в качестве итсрумента тестирования использую програмку на VB 6.0.
Полгода с разной переодичностью пользовал и никаких проблем тут вдруг не стого не сего отладчик студии не хочет стартовать проект ругается говорит:
 
'Project1.exe': Loaded 'C:\WINNT\system32\MSCTF.DLL', No symbols loaded.
First-chance exception at 0x004013da in Project1.exe: 0xC0000096: Privileged instruction.
Unhandled exception at 0x004013da in Project1.exe: 0xC0000096: Privileged instruction.


При этом без отладчика все запускается и работает(в от тестированой части разуметтся)
« Последнее редактирование: 14-12-2007 22:45 от Алексей1153++ » Записан

Да да нет нет все остальное от лукавого.
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 28-11-2006 22:01 » 

Этот файл существует  C:\WINNT\system32\MSCTF.DLL ?
Какие были сделаны изменения в системе до этого?

« Последнее редактирование: 28-11-2006 22:03 от Finch » Записан

Не будите спашяго дракона.
             Джаффар (Коша)
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 29-11-2006 05:01 » 

Конечно есть.
Да ни каких особых изменений не делал, добавил на тестовую форму кнопку и техт бокс.... причем кода их убрал проблема не исчезла.....

Записан

Да да нет нет все остальное от лукавого.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 29-11-2006 08:25 » 

Вообще по идее это озачает, что где-то в скомпилированном модуле используются привилегированные инструкции процессора. То есть в юзер моде используется то, что можно использовать только в кернеле. Может быть этого и нет на самом деле, но отладчик предполагает, что есть.

Попробуй выключить оптимизацию полностью. Сделать ребилд. Больше пока ничего в голову не приходит.
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 29-11-2006 09:07 » 

Попробую .... меня смущает то что такая хрень произошла на одном проете.... а саму либу меня пользуют несколько приложений тоже на ВБ и там все в порядке....

Хотя тут дальше начался какойто расколбас почемуто при запуске на дебаг релизового проекта он вылетает с ошибкой на создании процесса что вобщемто приисходить недолжно ....

Может не в проекте дело а студия крекнулась?


 
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #5 : 29-11-2006 13:52 » 

Пришли стек. А именно при дизассемблирование какая последняя команда была вызвана.
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 30-11-2006 06:28 » 

004013C0  jmp         dword ptr ds:[401030h]
004013C6  jmp         dword ptr ds:[401040h]
004013CC  jmp         dword ptr ds:[40112Ch]
004013D2  jmp         dword ptr ds:[401090h]
004013D8  db          ffh 
004013D9  db          25h 
004013DA  ins         byte ptr [edi],dx   //На этой команде бьет эксепшон
004013DB  adc         byte ptr [eax],al
004013DE  jmp         dword ptr ds:[401084h]
004013E4  jmp         dword ptr ds:[4010A4h]
004013EA  jmp         dword ptr ds:[4010B0h]
004013F0  jmp         dword ptr ds:[4010B4h]
004013F6  jmp         dword ptr ds:[40103Ch]

Call Stack
>   Project1.exe!004013da()    

Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #7 : 30-11-2006 08:06 » 

ins - Input from Port to String
чтение портов это непривилегированная операция. Значить ее нельзя исполнять в режиме пользователя (ring 3).
Вопрос в том как она попала в твой код. Тоесть ты сам ее туда записал или это из какой либы?
Записан
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 30-11-2006 09:18 » 

Greysfi, ээээ нет. Так ты совсем людей запутаешь Улыбаюсь Непривилегированная инструкция - это та, которая может выполняться в любом кольце защиты.

Другое дело, что на самом деле ins является привилегированной. Если в битовой карте ввода/вывода для данного порта стоит ноль и текущий уровень привилегий соответствует позволенному, то она может выполняться. В третьем кольце ее можно выполнить для COM порта, например, если он нормально открыт.

Вообще похоже на то, что порт открыт в режиме только записи, или адрес порта неверный.
« Последнее редактирование: 30-11-2006 09:20 от Scorp__) » Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 30-11-2006 09:24 » 

Что интересно, в проекте вообще нет работы с портами, работы с ком портами нет и в подключаемой АТЛ либе,    там только TCP .....
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #10 : 30-11-2006 09:25 » 

Ой сори я очепятался Улыбаюсь . Но думаю слова "Значить ее нельзя исполнять в режиме пользователя (ring 3)." это показывают.
Записан
Greysfi
Гость
« Ответ #11 : 30-11-2006 09:26 » 

Ты по стеку можешь определить как он на эту инструкцию вылез?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 30-11-2006 10:16 » 

Call Stack
>   Project1.exe!004013da() 

Это все что есть в стеке, эксепшон вылетает вмоент загрузки исполняемого файла...до загрузки моей АТЛ вообще еще не дошло.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #13 : 30-11-2006 10:21 » 

Судя по стеку эта инструкция находится в файле Project1.exe. Что это за файл? И он что без отладочной информации собран?
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 30-11-2006 10:36 » 

Совершенно верно этот файk, тестовая оболочка моего АТЛ мдтуля, создан при помощи VB6.0, почему без дебаговой инфы.... да вобщемто она мне там и не нужна, там есть референс на мою библиотеку, есть объявление
Piblic psd_fn as new DLS_clients.psd_fn_lib 
 да десяток конопок под котроыми дергаются те или иные методы библиотеки.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #15 : 30-11-2006 10:44 » 

Просто по ходу дело в самой тестовой проге.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #16 : 30-11-2006 10:51 » 

PSD, из листинга видно, что косвенный jump занимает имеет длину 6 байт. Мусор, на котором ты споткнулся, занимает теже 6 байт. Логично предположить, что там должна быть такая же команда jmp [...], но кто-то ее разрушил или переход был сделан не на начало команды.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #17 : 30-11-2006 11:24 » 

RXL, вот что значит системный подход Улыбаюсь Там же действительно видно таблицу переходов, но мы ее-то и не приметили Улыбаюсь

Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 30-11-2006 11:31 » 

Делать то что?
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #19 : 30-11-2006 12:21 » 

Искать точку, с которой был сделан коивой вызов или запись в память по соотв. адресу.
Рекомендую справиться по кодам команд, что есть FF и 25.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Scorp__)
Молодой специалист

ru
Offline Offline
Пол: Мужской

« Ответ #20 : 30-11-2006 15:28 » 

FF похоже на начало джампа, вот только адрес я не смог расшифровать, то что у меня получается на адрес совсем не похоже. Лучше бы это место в hex режиме увидеть
Записан

- А Вы сами-то верите в привидения?
- Конечно, нет, - ответил лектор и медленно растаял в воздухе.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #21 : 30-11-2006 19:46 » 

JMP – Unconditional Jump (to same segment)
register indirect      1111 1111 : 11 100 reg
memory indirect         1111 1111 : mod 100 r/m

JMP – Unconditional Jump (to other segment)
indirect intersegment   1111 1111 : mod 101 r/m

FF вписывается хорошо, а 25 (00 011 001) - нет.
Думаю трабла в этом. Ищи, кто записал в эту точку данные!
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Greysfi
Гость
« Ответ #22 : 01-12-2006 11:39 » 

Чето у меня сомнения по поводу того может ли обычная прога в свой сегмент кода хоть чего нибудь записать это первое.
Второе FF 25 90 10 40 00 это дамп команды jmp         dword ptr ds:[401090h]. Так что 25h тоже не плохо вписывается. Следовательно мы имеем дело с тем что кто то выше по стеку неправильно сделал вызов или еще хуже jump, возможно хотя и с очень маленькой вероятностью что компилятор не правильно код строит. Так же могут быть приколы со стеком в общем тут разбираться и разбирать.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #23 : 01-12-2006 17:48 » 

Улыбаюсь блин, я ступил: 0х25 с чего-то интерпретировал как 25. Так конечно - 00 100 101 - вписывается.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #24 : 02-12-2006 23:50 » 

Это всё интересно, только часто ли в мировой практике подобное наблюдалось в коде, генерируемом VB 6.0, которому скоро уж 10 лет от роду будет? И поскольку ответ отрицательный, то дело наверно не в этом... Что же касается идей записи данных по адресам кода... Поскольку VB - это не C/C++, и в нём нужно очень постараться так криво работать с памятью, опять же, возникает мысль, что проблема в чём-то другом...
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Greysfi
Гость
« Ответ #25 : 04-12-2006 08:04 » 

Во первых насчет записи опять же говорю что скорее всего этот код находиться в странице кода, а ее модифицировать не так уж и просто Улыбаюсь. То есть что кто то портить код это скорее всего не так. А вот чтобы отбросить ошибку компилятора нужно попробовать построить код с разными там оптимизациями и если они присутствуют то попробовать их отключить. И посмотреть повторяется ли эта бага. 
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #26 : 04-12-2006 09:28 » 

Скомпилировал  Project1.exe с отключенными оптимизациями, вроди как  все заработало.... инетерсно почему пол года до этого с влюченой оптимизацией все работало а сейчас сломалось.
Записан

Да да нет нет все остальное от лукавого.
Greysfi
Гость
« Ответ #27 : 04-12-2006 09:40 » 

Иногда оптимизация приводит к странным результатам Улыбаюсь
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #28 : 04-12-2006 17:04 » 

PSD, отладочная сборка обычно без оптимизаций делается. Не зря, наверное...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Greysfi
Гость
« Ответ #29 : 05-12-2006 08:01 » 

Отладка оптимизированного кода может стать очень интересной вещью Улыбаюсь
Записан
PSD
Главный специалист

ru
Offline Offline
Пол: Мужской

« Ответ #30 : 05-12-2006 08:31 » 

Нет, оптимизация тут не причем ... терерь эксепшон бьет в другом месте...
и тоже без причинно... так как без отладки все работает без экцесов....

Видемо это всетаки студия помирает .... попробую переставить ......   
Записан

Да да нет нет все остальное от лукавого.
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #31 : 05-12-2006 10:39 » 

Offtopic:
Greysfi, я в BuilderC++ отлаживаю частично оптимизированные программы. В gcc, помнится, оптимизация и включение отладочной информации - несвязанные фичи.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Greysfi
Гость
« Ответ #32 : 05-12-2006 10:52 » 

RXL, Я не говорю что это не возможно. Просто иногда при оптимизации происходят всякие сворачивания кода и не всегда возможно сопоставить машинный код и код на высокоуровневом языке. А отладка и оптимизация конечно не связанные вещи Улыбаюсь.
Записан
Страниц: 1 2 [Все]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines