Перехват EOleException

Тема в разделе "WASM.RESEARCH", создана пользователем malex, 10 янв 2025.

  1. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    Может я плаваю в теме COM, но всегда считал клиентом того кто создаёт у себя инстанс объекта, который грузиться в процесс клиента. Здесь нет IPC. Заинстанцированный объект выступает тут в роли INPROC_SERVER. Или объект можно инстанцировать как внешний процесс?
    --- Сообщение объединено, 12 янв 2025 ---
    Да, можно по ходу как отдельный процесс CLSCTX_LOCAL_SERVER
    https://learn.microsoft.com/ru-ru/windows/win32/api/wtypesbase/ne-wtypesbase-clsctx
     
  2. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    479
    https://learn.microsoft.com/ru-ru/windows/win32/com/com-clients-and-servers
    P.S.
    Главное, что это всё находится за фасадом DCOM и клиент вообще по хорошему не обязан знать с каким вариантом он работает.
    Это правда не всегда - когда методы предполагают скармливать серверу именно указатели на локальные регионы памяти и буфера чтобы на стороне сервера в них производилась запись, то это уже не может быть реализовано как внепроцессный сервер, поэтому некоторые лимиты в этом есть, но если мы работаем с OLE DCOM, то там как правило всё шито-крыто посредством принуждения к модели типов из Visual Basic.
     
    malex нравится это.
  3. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    64
    Здесь(на этом форуме) под исключением понимается исключение машинное. Всякий клиент-серверный обмен не является исключением. Что бы решить тс проблему необходима документация на интерфейс этих "исключений". Имхо это не решаемо, тк все в данной теме интернал. Вышел индекс массива вникуда и яп сгенерит событие, не решаемое вне этого яп. А такие говно-сборки тащат тонны таких же модулей, ошибки в которых не разрешимы в принципе.

    Единственный способ - удалить проблемный метод(в данном случае даже абстракция файловая наверно и не известно в каких файлах что находится). Настолько это толстое :sarcastic:
     
    Последнее редактирование: 12 янв 2025
    Marylin и Mikl___ нравится это.
  4. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    484
    malex с какой БД у вас Дельфи7 прожка общается?
     
  5. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    MSSQL
     
  6. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    64
    Нет даже инструментов для анализа этого дерьма. Упомянутый VB - там таскание мышем окон на формы, какие при этом могут быть механизмы..

    Если что либо собирается из говна и палок, то остается оное.

    Такой подход для меня годный, пилят асинхронное кривое говно, но с таким можно работать всем - искать уязвимости, патчить вдоль и поперек, да тупо половину среды заменить в виде файлов оно не заметит.
     
  7. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    Я сначала хотел эту концепцию развернуть, а потом отказался, поскольку как мне кажется весь этот объектный код заставляет работать ядерный слой оси, тем самым поддерживая жизнь в том, что без активного пользования давно бы умерло. Но это лично мое мнение. При этом я с вами согласен во многом относительно сказанного вами. Вся эта компонентная модель очень плохо поддается отладке в целом, т.е когда проблема затрагивает многие компоненты и подсистемы.
     
    Последнее редактирование: 12 янв 2025
  8. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    484
    Предлагаю включить трассировку на сервере БД

    Use SQL Server Profiler
    SQL Server Profiler can help you trace and diagnose issues:
    1. Open SQL Server Profiler from SSMS.
    2.Create a new trace and connect to the SQL Server instance.
    3.Select the events you want to capture, such as Errors and Warnings > Attention and Errors and Warnings > User Error Message.
    4.Start the trace and reproduce the error to capture detailed information.
     
  9. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    К сожалению это невозможно, к серверу нет доступа ни физического, ни виртуального. Доступ только с АРМ из проги по сети.
     
  10. Ahimov

    Ahimov Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    64
    malex

    Попутал тс все, какой ядерный слой вы е-лись. Это какой то трешевый развод.

    Мы такое не решаем.
     
  11. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    Ладно
     
  12. malex

    malex New Member

    Публикаций:
    0
    Регистрация:
    8 янв 2025
    Сообщения:
    20
    Спасибо! Нашел функцию ConnectionWrite в C:\Windows\SysWOW64\dbnetlib.dll. В ней делается вызов send через call dword ptr ds:[<Ordinal#19>] из ws2_32.dll. Ничего нового не увидел. Скорее всего исключение возникает из-за обрыва соединения в рамках контекста call <ws2_32.WahReferenceContextByHandle>. Теперь вопрос о трассировке переноситься на уровень сетевого обмена. Искать что-то вроде WSAENETRESET.

    P.S. Wah относится к OpenRCE Win32 Call Chains Database, что это такое, черт его знает. Но судя по словам это какие-то функции вызова цепочек БД.
     
  13. Marylin

    Marylin Active Member

    Публикаций:
    0
    Регистрация:
    17 фев 2023
    Сообщения:
    217
    malex, в IDE Delphi вроде есть-же свой отладчик.
    Запустите софтину в нём, и как получите крэш, смотрите стек-вызовов "call-stack".
    Я никогда делфи не юзал, и без понятия, что там происходит.
     
  14. alex_dz

    alex_dz Active Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    484
    ежели есть сорц код дельфей ет совсем другая песня!
     
  15. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    479
    Я думаю надо глядеть вот на эту тему гугл: https://learn.microsoft.com/en-us/a...-(dbnetlib)(connectionopen(connect())-)-sql-s
    Вероятно брэндмауэр режет запросы или вон даже есть комментарий про то, что часы должны быть синхронизированы на клиенте и машине с MS SQL иначе тоже такая ошибка может вылазить.
     
    malex нравится это.