Ruro, breakpoint
-
Предыдущую тему закрыли, проигнорировав мои сообщения. Переношу сюда.
Имя вашего персонажа: не зависит от персонажа (ошибка при выборе любого аккаунта, до выбора персонажа дело не доходит). Например, Anubis the God.
Дату и время обнаружения ошибки 21.05.2015
Описание самой ошибки: остановка исполнения ruro.exe по точке останова (до входа в графический режим).
Причины почему это следует считать ошибкой и какой должна быть правильная работа (для тем с ошибками в скиллах, механике и т.п.): очевидно.
Если есть скриншоты иллюстрирующие ошибку, их можно приложить к теме: нет (если надо, могу сделать, но это обычное текстовое окошко типа MessageBox).Описание ошибки:
- Обновление завершилось почти нормально. vcredist пришлось установить вручную (апдейтер не запустил его сам).
- При запуске выдаётся информативное окошко:
Breakpoint: Could not get thread context, error 5. - Далее стандартное сообщение ragexea.exe не работает, отладка/закрыть.
ОС: Vista Ultimate (последние обновления) х64.
Что пробовал:
- Антивирус пробовал отключать - не влияет.
- От администратора пробовал запускать - тоже не влияет.
- Собрать клиент из iro sak. Ошибка та же.
- Попробовал клиент из первой ссылки в теме скачивания клиентов (motr150521). Ошибка та же.
- Попробовал скачать клиент от Лейзи. Ошибка та же.
- Перепробовал практически все режимы совместимости в MS Application Compatibility toolkit.
- В отладчике ruro смотрится криво (сообщается об испорченной таблице импорта и кривом сегменте кода). Могу предоставить стек-трейс до момента возникновения ошибки. "Перешагнуть" ошибку не вышло (правда, не особо долго я с этим возился; наверно обходить ошибку надо гораздо раньше, чем я это делал).
- vcredist пробовал как нативный (64бит), так и 32-битный (и по отдельности, и вместе).
Иногда ruro (непонятно в каких случаях, но явно не всегда) пишет в свой лог многократно вот это:
Код:
2015.05.22 02:07:28 Unhandled access violation
2015.05.22 02:07:28 Exception code: c0000005
Exception address: 65053E272015.05.22 02:07:28 Stack dump
Return address ff34841Return address 0
Может кто чего посоветует? Не знаю чего ещё попробовать. На ум только предпоследнее средство приходит - разбор дизассемблерного текста... но неохото. :%)
-
Раз уж никто ничего путного так и не ответил за неделю, попробую дополнить топик.
Стек руро на момент выдачи окошка (вдруг поможет):
[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, играть не могу..