|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
Пытаюсь подсунуть FastMM4 вместо BorlndMM - ошибка25.03.2019, 16:24. Показов 4583. Ответов 26
Метки нет (Все метки)
Привет, коллективный разум! Нужна помощь...
Есть одна противная программа, жутко проприетарная и тормозная. Хочу подсунуть ей кастомный менеджер памяти, чтоб хоть как-то ускорить. Прога на Delphi5, сорцов естественно нет. Я заменяю ей BorlndMM.dll на FastMM4-AVX, но первое же обращение к SysGetMem(24) приводит к AccessViolation внутри самой SysGetMem на 14-м шаге. На скриншоте видно, что в EDX - ноль... Может, я чего-то не так делаю? Может, программа должна вызвать какую-то процедуру инициализации, прежде чем работать с этой библиотекой? Пробовал разные версии и форки, пробовал компилировать под D5, D7 - не помогает...
0
|
|
| 25.03.2019, 16:24 | |
|
Ответы с готовыми решениями:
26
borlndmm.dll 6-ой версии - ошибка ? Как подсунуть парсеру для разбора строку вместо файла? Можно ли "подсунуть" Excel-ю байтовый массив вместо файла? |
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|
| 29.03.2019, 14:45 | |
|
Может оставить 2 менеджера памяти - для bpl стандартный BorlndMM.dll, а в таблице импорта поправить имя dll на FastMM.dll? Или будет конфликт?
0
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
||
| 29.03.2019, 17:44 [ТС] | ||
|
1) Оставить либу, скомпилированную автором FastMM. Без патчей. 2) Написать заглушку, проксирующую вызовы к ней через себя, дать ей имя BorlndXX.dll 3) Первый модуль в секции импорта - RxCtl5.dll, заменить в нём блокнотом BorlndMM на BorlndXX. 4) В BorlndXX при вызове любой функции дёргать сначала код инициализации BorlndMM. RxCtl5 - это визуальные компоненты, они не сильно требовательны к памяти. В отличие от следующих BPL, в которых лютая математика. Его вызовы будут идти через заглушку, а остальные - напрямую в либу без потери скорости. Осталось нагуглить, как узнать адрес EntryPoint, имея hmodule. Т.к. процедура инициализации не экспортируется. Но это решаемо, думаю.
0
|
||
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|||||||||||
| 01.04.2019, 15:57 [ТС] | |||||||||||
|
После замены BorlndMM на BorlndXX в RxCtl5.bpl (автозаменой) последний перестал дёргать SysGetMem на этапе инициализации. Теперь следующий за ним BPL дёргает (и падает). Перспектива патчить все BPL мне не нравится...
Сейчас пробую так: в упомянутом выше модуле hrdir_b есть немного ненужного кода в нужном месте:
Добавлено через 39 минут Прописал. не получилось. Оригинальная FastMM4 падает ровно в том же месте, где и моя скомпилированная в режиме ассемблера версия:
Добавлено через 16 минут О, получилось, кажись. 1) Патч на fastmm.dll: вырезал проверку CheckCanInstallMemoryManager, которая вызывала FastGetHeapStatus, которая падала. 2) Патч на RxCtl5.bpl: принудительный вызов RunInitializationCode (CALL mmdll+70AC) сразу после LoadLibrary. Программулина завелась ![]() Сейчас оформлю красиво и замеры сделаю. Добавлено через 19 минут Работать с Olly вроде бы приятно, и в то же время подбешивает.. Вот сейчас забил кусок NOP-ами (0x90), сохраняю - каждый 8-й NOP заменился на 0x9D. Более того, пишу 70AC, а сохраняется 7DAC. Подумал, что я слепой, но нет - скриншот свидетель, я писал правильно... Добавлено через 8 минут И ещё такая фигня случается: Some fixups are only partially available. OllyDbg is unable to copy them to the executable file. Сохранять отказывается. Что за фиксапы????.....
0
|
|||||||||||
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|
| 01.04.2019, 16:32 | |
|
1
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|
| 01.04.2019, 18:32 [ТС] | |
|
Аа.. Вот и чтение на ночь. А как они могут быть partially available, есть мысли?
0
|
|
|
4195 / 1841 / 223
Регистрация: 06.10.2010
Сообщений: 4,127
|
|
| 02.04.2019, 03:35 | |
|
Может когда ты патчил bpl ты затёр инструкции с абсолютными адресами, например "call 12345h", но релоки для этих инструкций остались и olly предупреждает, что их надо удалить.
1
|
|
|
9 / 9 / 1
Регистрация: 04.07.2012
Сообщений: 218
|
|||||||||||
| 02.04.2019, 14:40 [ТС] | |||||||||||
|
Всё отлично, выкусил лишние релоки через RelocRebuilder.
Выводы: - Ассемблерные сборки реально быстрее. По процентам сложно сказать - каждый usecase уникален. А вот разницы между форком AVX и ориг. FastMM я не заметил. Есть подозрения, что AVX-команды используются только в 64-битной версии библиотеки. - Приложения, собранные с сишным модулем hrdir_b, некорректно инициализируют FastMM. Лечится тремя патчами: 1) В процедуре FastGetMem:
3) И там же: заменить 'SwitchToThread' на LPCSTR-константу (совместимость с XE8)
0
|
|||||||||||
| 02.04.2019, 14:40 | |
|
Ошибка с BORLNDMM.Dll Ошибка borlndmm.dll Ошибка access violation at address in module borlndmm.dll write of address Ошибка "borlndmm.dll" Delphi2007. Странное поведение FastMM4 Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|