Периодические сбои в приложении C ++ при вызове C# dll - PullRequest
0 голосов
/ 10 апреля 2020

Я написал плагин для приложения C ++. Приложение с открытым исходным кодом, однако я не очень хорошо разбираюсь в C ++, поэтому я хотел бы спросить сообщество здесь, был ли мой анализ проблемы точным, и если бы вы могли порекомендовать лучшие способы продолжить отладку.

Плагин Я написал в C#, есть шаблон, предоставленный автором приложения, который я использовал для создания плагина. Приложение X64dbg, я предоставил ссылку на шаблон и основное приложение ниже.

Шаблон
X64dbg

Проблема У меня есть то, что, когда отладчик подключен к приложению (только когда он присоединен к приложению (не все приложения), нет никаких проблем с неприсоединением), он вызовет sh, как только вызывается плагин. Это сохраняется в течение 10-15 сбоев, а затем начинает работать нормально до перезагрузки.

Как уже упоминалось выше, он присутствует не все время, однако он сохраняется в разных приложениях. Поэтому, если приложение постоянно вылетает, оно будет делать это каждый раз при перезагрузке. Если приложение нормально работает, оно прекрасно при каждой попытке.

Код ошибки в средстве просмотра событий: 0xC0000005
Данные события: The process was terminated due to an unhandled exception. Exception Info: System.NullReferenceException

Я пытался ставя проверки повсюду, я могу придумать, чтобы найти этот нулевой указатель, однако все попытки пока не увенчались успехом.

Мое лучшее предположение, что это как-то связано с тем, как CLR загружает DLL? Итак, знаете ли вы, что может быть причиной проблемы или какие шаги необходимо предпринять для определения причины? Также, если у кого-либо есть какая-либо подробная информация о том, что происходит, когда неуправляемый код вызывает управляемый код на Windows, это также было бы очень полезно.

Я держусь за стр. aws, поэтому любой совет, который вы можете дать о том, как go определить следующие шаги, которые необходимо предпринять для устранения проблемы, действительно будет полезен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...