Ruro, breakpoint
-
Раз уж никто ничего путного так и не ответил за неделю, попробую дополнить топик.
Стек руро на момент выдачи окошка (вдруг поможет):
[code:yrpu4ngy] ntdll.dll!__RtlUserThreadStart@8() + 0x1b байт
ntdll.dll!___RtlUserThreadStart@8() + 0x23 байт
kernel32.dll!@BaseThreadInitThunk@12() + 0xe байт
ruro.exe!00c11e8e()
ruro.exe!00c123d6()
ruro.exe!00c0eedb()
ruro.exe!00c0abae()
ruro.exe!00c0b89a()
user32.dll!_MessageBoxW@16() + 0x18 байт
... внутренняя кухня винды ...[/code:yrpu4ngy]
У ruro2.exe стек другой:
[code:yrpu4ngy]
ntdll.dll!__RtlUserThreadStart@8() + 0x1b байт
ntdll.dll!___RtlUserThreadStart@8() + 0x23 байт
kernel32.dll!@BaseThreadInitThunk@12() + 0xe байт
ruro2.exe!00ad9f4b()
ruro2.exe!00ada642()
001bfcf4()
kernel32.dll!_WaitForDebugEvent@8() + 0x64 байт
ntdll.dll!_DbgUiWaitStateChange@8() + 0x1e байт
ntdll.dll!_ZwWaitForDebugEvent@16() + 0x12 байтruro2.exe!00ad125d()
user32.dll!_MessageBoxW@16() + 0x18 байт
...[/code:yrpu4ngy]Может быть проблема в этом:
<!-- m --><a class="postlink" href="https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=RU-RU&k=k(%22WINBASE%2fGETTHREADCONTEXT%22">https://msdn.microsoft.com/query/dev10. ... CONTEXT%22</a><!-- m -->);k(GETTHREADCONTEXT);k(DevLang-%22C%2B%2B%22);k(TargetOS-WINDOWS)&rd=true
<!-- m --><a class="postlink" href="https://msdn.microsoft.com/en-us/library/ms681665(v=vs.85">https://msdn.microsoft.com/en-us/librar ... 65(v=vs.85</a><!-- m -->).aspxА именно:
- Забыли указать доступ THREAD_QUERY_INFORMATION или THREAD_GET_CONTEXT при открытии процесса?
- Забыли вызвать SuspendThread перед GetThreadContext?
- Кстати, айс ругается что руро.ехе меняет значения отладочных регистров. Менять отладочные регистры позволительно только отладчикам.
- Адрес, передаваймый GetThreadContext должен быть выровнен на границу 64 бит.
PS: При запросе информации о файлах/каталогах нужно выделять буфер >=MAX_PATH (256 байт), а не 5-6 байт с последующим перевыделением (не ошибка, но всё же здорово тормозит, когда каждый запрос к системе дублируется по нескольку раз).
-
Дальнейшие раскопки в ruro2.exe. Нашёл цикл отладки в ruro2 (адрес AD03B6). Отлаживая этот отладчик обратил внимание, что после выдачи окошка успевает произойти ещё несколько событий, связанных с ragexea, вот они (pid и tid опускаю - они разные при каждом запуске):
- EXCEPTION_DEBUG_EVENT:
code=C0000096 (PRIVILEGED_INSTRUCTION_BLOCKED)
flags=0
exception record* = NULL
ExceptionAddr=96BE08
NumberPars=0
First-time exception
2)OUTPUT_DEBUG_STRING
str=17F41C, len=69, type=ANSI STING
3)OUTPUT_DEBUG_STRING
str=17F417, len=7F, type=ANSI STING
4)OUTPUT_DEBUG_STRING
str=17F404, len=52, type=ANSI STING
5)OUTPUT_DEBUG_STRING
str=17F3F8, len=63, type=ANSI STING
6)OUTPUT_DEBUG_STRING
str=17F420, len=33, type=ANSI STING
7)OUTPUT_DEBUG_STRING
str=17F424, len=29, type=ANSI STING
8 ) EXCEPTION_DEBUG_EVENT:
code=80000003 (BREAKPOINT)
flags=0
exception record* = NULL
ExceptionAddr=77940004
NumberPars=1 (par1=0)
First-time exception
Вот в последнем исключении всё интересное и происходит. ruro обрабатывает его, выполняет ContinueDebugEvent, после чего ragexea и падает.
Последующие события неинтересны (выгрузка DLLок, завершение потоков, завершение процесса).В виду того, что ragexea пытается выдать отладочные сообщения, нужно бы в руро засунуть хотя бы их дамп, чтобы понять, что происходит. К сожалению, сам я их просмотреть не смог (конструкция "отладчик из-под отладчика" накладывает ограничения, а свой руро не хочется писать; хотя, со временем можно попробовать :x ...).
- EXCEPTION_DEBUG_EVENT:
-
еще чуть чуть, и ты сделаешь всю работу за админа(
-
Если ruro.exe пускается (корректно установлен vcredist), в сторону ruro2.exe можно не копать. Это статически слинкованный с рантаймом студии файл, для тех, кто не может установить vcredist, со всеми негативными последствиями.
-
Проблема все еще присутствует, человек уже написал как её возможно решить. Исправьте пожалуйста.
-
Когда мы можем надеяться на решение проблемы? Уже второй месяц у него нет возможности зайти в игру! Просим администрацию поскорее помочь. Сделайте уже, чтобы все могли играть, вместо нововведений... Итак народа на сервере мало.
-
Понаставляют себе убогие ОС, а потом в игру не могут зайти.
-
@fidosemen:
Понаставляют себе убогие ОС, а потом в игру не могут зайти.Плюс.
Хотя у меня и на висте никаких проблем с ро никогда не возникало. -
fidosemen, ты много ОС написал, прежде чем другие называть убогими?
Как-то странно требовать сменить ОС из-за одной игры. Вообще может отдельный комп под каждую игрушку посоветуете ставить?..
-
Одинокий Странник, у тебя клиент Лейзика? если нет, мб зальешь куда-нибудь его, вдруг пойдет...
-
Да, у меня клиент Лейзи.
-
Ап.
Не пойму, как можно так долго фиксить ошибку, причина которой ясна и место которой явно известно?
-
Люди, майская тема!!! Когда решат проблему?? Человек уже отчаялся расчитывать на помощь от сервера, играя на нем 10 лет... Имейте совесть.
-
Аналогичная хрень на ноуте с xp, на котором раньше играл. Нашли какие нибуть решения?
-
Не нашли!!! Человек не играет уже с мая... может уже что-то сделают?
-
Магистр Магии, какой процессор на ноуте? Есть большое подозрение, что ошибка зависит не от ОС (в ruro.exe криво парсится результат работы GetThreadContext для некоторых процессоров).
Решение: сделайте ruro.exe open-source - исправим без проблем.
-
o1, помоги человеку ... или добей - чего он, уже как пол года, мучается-то?
-
Core i7 2600K Vista Enterprise SP2 x64 установлена для теста, подтверждаю, мотр не работает, другие сервера работают Ошибка из первого поста человека. Решения пока не нашел, установка разных вц редисок не спасает.
-
Та же ошибка, виста 64, играть не могу..
-
Владельцам висты советую накатить все доступные обновления винды, должно помочь