Грубая сила

Дибажил я тут одну программку. Вылетала она при выходе, при чём совсем в том коде, который писался нами, и от которого есть исходники. Вылетала она в коде движка, от которого есть только либы и заголовочные файлы.
Происходило всё очень просто – access violation writing location 0xfeeefeee, что обозначает попытку записи в уже освобождённую память.
В ход пошло всё, что было под рукой – дизасм, просмотр дампов памяти, брейкпоинты на запись/чтение памяти. Даже квакса чуть задействовал, правда он пришёл, показал как правильно пользоваться тем, что было и ушёл. Но, при этом он подсказал одну очень умную вещь – почему бы мне не порыться получше в SDK движка и не поискать pdb (Program database – отладочная информация) от этой дллки. Я порылся, и действительно обнаружил оную, подключил – и вуаля – сразу всё стало на свои места. Одного взгляда на call-stack хватило, чтобы понять, кто и кого обманывает. Теперь уже осталось совсем немного – выяснить как именно происходит нарушение записи и починить.

Собсно резюме – грубая сила всегда будет уступать думающему мозгу. Даже в программировании 🙂

Similar Posts

  • OpenMP

    Попробовал тут, намедни, OpenMP (Open Multi-Processing – это набор директив компилятора, библиотечных процедур и переменных окружения, которые предназначены для программирования многопоточных приложений на многопроцессорных системах с разделяемой памятью на языках C, C++ и Fortran). И, можно сказать, прозрел. Добавил в существующие исходники всего две строчки кода и время экспорта тестового фрагмента уровня уменьшилось почти в…

  • Свадьба

    Недавно участвовал в свадьбе Ленки Савченко, теперь уже Анниной. Интересная штука эта свадьба – как-то не осознаю я, что она уже замужем и все такое. Начинаю понимать теперь, почему у меня мама одну свою подружку называет девичьей фамилией, хотя уже дофига лет с ее свадьбы прошло. Еще я наконец оцифровал и сжал видео со свадьбы…

  • Отчёт. День второй: драгобрат.

    Недоброе утро началось со звонка будильника в восемь утра, от которого я не проснулся, а вот девочки провели небольшой подсчёт, который показал, что в живых нету ни одного водителя 🙂 и поэтому меня поставили перед выбором – или я просыпаюсь сам и сажусь в машину, как пассажир, или меня грузят телом в багажник, чтобы было…

  • Вирусы и антивирусы

    Попросили меня вчера наведаться в гости, в один знакомый офес. Говорят – у них там лепрозорий, все машины заражены вирусами, работать не получается, всё перегружается итд. В общем-то нормальная ситуация для места, где преобладает женский коллектив, а сисадминов не держат. Машин там около десятка, и ставить на каждую антивирус – можно замахаться. Да ещё и…

  • espresso test failure

    Если внезапно вы решили подключить espresso и начать писать тесты, а потом после очередных манипуляций вдруг тесты приложения перестали запускаться и начали бросать исключение NoClassDefFoundError YourActivity, то вполне вероятно, что может спасти совершенно нелогичное действие: Добавить исключения суппорт либы в gradle для компиляции espresso (в моём случае espresso-contrib) androidTestCompile (‘com.android.support.test.espresso:espresso-contrib:2.2’) { exclude group: ‘com.android.support’ exclude…