Сейчас на форуме: jinoweb, bartolomeo, rmn (+4 невидимых)

 eXeL@B —› Программирование —› Exception E06D7363
Посл.ответ Сообщение


Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 29 мая 2014 11:09 · Поправил: Rainbow
· Личное сообщение · #1

Работаю над написанием плагина для NPP++. С некоторого времени и непонятно с какого перепуга NPP начал втихую отказываться работать и сворачивать монатки со словами E06D7363! Я под отладчиком исколесил кусок кода в котором все это безобразие творится, но вопросов только добавилось, так как места в разных случаях-разные (я уже думал я перегрелся). Короче, после длительного секса с мозгом я выяснил, что этот exept происходил в недрах LocalAlloc, которая используется в плагине очень часто.

Кто-нибудь знает, что это за барабашка, откуда она взялась и как от нее избавиться ?




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 мая 2014 11:17
· Личное сообщение · #2

Rainbow пишет:
что этот exept происходил в недрах LocalAlloc

сказка
Rainbow пишет:
словами E06D7363

гугл говорит это обычный с++ exception который ты не ловиш через catch
ну итд




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 29 мая 2014 11:22
· Личное сообщение · #3

reversecode пишет:
Rainbow пишет:
что этот exept происходил в недрах LocalAlloc
сказка


Интересно, откуда такая уверенность.

reversecode пишет:
Rainbow пишет:
словами E06D7363
гугл говорит это обычный с++ exception который ты не ловиш через catch
ну итд


Какой C++ exception, я пишу на MASM32. Единственное, что я могу предположить - это то что kernel32/ntdll написаны на сях и поэтому C++ exception... Других вариантов я не вижу




Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 29 мая 2014 11:26
· Личное сообщение · #4

Rainbow пишет:
Интересно, откуда такая уверенность.

это гугл говорит, других данных у читателей нет

Rainbow пишет:
Какой C++ exception, я пишу на MASM32. Единственное, что я могу предположить - это то что kernel32/ntdll написаны на сях и поэтому C++ exception... Других вариантов я не вижу

тогда только бек трейс что бы понять видеть где произошла точка бифуркации

иначе гадание на кофейной гуще
Rainbow пишет:
Работаю над написанием плагина для NPP++.

но пишете на masm




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 29 мая 2014 11:37
· Личное сообщение · #5

reversecode пишет:
Rainbow пишет:
Работаю над написанием плагина для NPP++.
но пишете на masm


Скажу больше - плагин на MASM и для MASM ! Я вообще фанат асма, в частности ЯП masm. Сами знаете, что такое асм и блокнот и какой это процесс. Короче назначение - в помощь (говно)кодеру-масмеру для помощи в разработке софта на MASM.



Ранг: 262.5 (наставник), 337thx
Активность: 0.340.25
Статус: Участник

Создано: 29 мая 2014 11:45
· Личное сообщение · #6

Очевидно нужно копаться в коде самого блокнота. Ведь раньше ваш плагин не вызывал подобную ошибку, стало быть предыдущие версии этим не болеют. нп++ как раз на сях написан и как сказал выше reversecode, обычный с++ exception который ты не ловиш через catch. Только в данном случае не ты, а разработчик блокнота. Самый простой вариант - прогнать плагин на старой версии и убедиться конкретно




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 29 мая 2014 11:52
· Личное сообщение · #7

TryAga1n пишет:
Очевидно нужно копаться в коде самого блокнота.


Мне кажется врятли. Плагин получает управление, работает обрабатывает n-ное количество модулей исходного проекта и падает и в падениях нет постоянства. Причем старые версии npp здесь ни при чем, потому что возникла ошибка при тестировании на одной и той же версии пада.




Ранг: 337.6 (мудрец), 224thx
Активность: 0.210.1
Статус: Участник
born to be evil

Создано: 29 мая 2014 12:46 · Поправил: ajax
· Личное сообщение · #8

сишный эксэпшн стопудово. мож cdecl/stdcall сменились?

-----
От многой мудрости много скорби, и умножающий знание умножает печаль





Ранг: 72.3 (постоянный), 133thx
Активность: 0.380
Статус: Участник

Создано: 29 мая 2014 13:48
· Личное сообщение · #9

Не системный фолт.




Ранг: 110.8 (ветеран), 104thx
Активность: 0.090.01
Статус: Участник

Создано: 29 мая 2014 13:56 · Поправил: Rainbow
· Личное сообщение · #10

Хм. Непонятно. В очередной из тестов функция LocalAlloc с аргументом в 8000h байт не уронила процесс, а все-таки вернула код ошибки - NOT_ENOUGHT_MEMORY. После нескольких таких вызовов подряд процесс все-таки упал с этим экзепшном. Процесс пада трескает 17 мб озу. КАКОГО ХРЕНА ПАМЯТИ НЕ ДАЮТ ?????? )))

Добавлено спустя 14 минут
Как я понял, проанализировав нутро LocalAlloc, функция использует кучу и сводится к ZwAllocateVirtualMemory.
Не может ли облом в высвобождении быть следствием HEAP OVERFLOW/CORRUPTION ??

Добавлено спустя 3 часа 6 минут
Вообщем проблема решена и заключалась в следующем. В одном месте шло переполнение выделенной кучи, видимо перезаписывались нужные указатели, и как следствие нарушалась работа MemoryManager'a.
P.S. Ебучая и неведомая ХНЯ отняла у меня сутки (


 eXeL@B —› Программирование —› Exception E06D7363
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати