Arhn - архитектура программирования

Как обрабатывать исключение C++ 3765269347

Я работаю над многопоточным приложением, которое в целом работает нормально.

Теперь кажется, что подпотоки дают сбой, и, настроив Visual Studio для создания исключений C++, я обнаружил следующую информацию об исключении:

ExceptionCode : 3765269347
ExceptionFlags : 1
ExceptionRecord : <NULL>
ExceptionAddress : 0x0000...0
NumberOfParameters : 4
params:
  magicNumber : 429065504
  pExceptionObject : 0x... (some memory address)
  pThrowInfo : 0x... (some memory address) {<application.exe>_Tl3?AVC_IOException@@ ...
    attributes : 0
    pmfnUnwind : 470560
    pForwardCompat : 0
    pCatchableTypeArray : 6451800
  pThrowImageBase : 0x... (some memory address) {<application.exe>_IMAGE_DOS_HEADER_ImageBase}

(старался скопировать как можно лучше, за опечатки не стреляйте)

Я искал в Интернете упомянутый код исключения, но я не понимаю объяснения, и я искал упомянутый AVC_IoException, но ничего не нашел. Кто-нибудь знает, что я могу здесь сделать?

К вашему сведению, исключение выбрасывается, когда я пытаюсь что-то записать в буфер (к вашему сведению, этот буфер не NULL), похоже, это не связано с загрузкой каких-либо DLL-файлов (точки останова я ставил на каждом loadlibrary(), но ни одна из них не была вызвана).

Вот кусок кода (это рекурсивная функция, записывающая что-то в буфер):

  virtual void fillBuffersBeforeWrite(const <internal_struct>* pDsp, size_t nByteCount)
  {
    <internal_class>* w = writer();
    if (w && (w != this)) {
      w->fillBuffersBeforeWrite(pDsp, nByteCount);
    }
  }

заранее спасибо


  • Связанные вопросы об этом же исключении: stackoverflow.com/search?q=3765269347 17.11.2016
  • Вы пытались запустить в отладчике, чтобы фактически поймать исключение/сбой в действии? Где в вашем коде это происходит? Что ты здесь делаешь? Может быть, это из-за гоночных условий, из-за которых вы пропустили управление? Есть тысячи возможностей, и мы не можем перечислить их все. Вы должны помочь нам, сузив список. 17.11.2016
  • Возможное объяснение того, что функция dllmain() в DLL умерла из-за возникновения исключения. stackoverflow.com/questions/17069336/ Если это так, вам нужно будет посмотреть на dll, загружаемые вашей программой, и на то, что вызывает их сбой. 17.11.2016
  • Я обновил свой вопрос: исключение выдается при записи в буфер, связи с функцией LoadLibrary вроде нет. 17.11.2016
  • Загружаете ли вы динамическую библиотеку DLL с помощью LoadLibrary в коде? Является ли буфер исходящим из такой DLL? Вы делаете это в такой DLL? Не видя никакого кода, невозможно что-либо сказать, поэтому попробуйте создать минимальный, полный и проверяемый пример и покажите нам. Как я уже говорил, у этого сбоя могут быть тысячи причин, вам нужно сузить их еще больше. 17.11.2016
  • Это очень простое исключение C++. Некоторый код, который вы вызываете, возможно, в библиотеке, использует throw, а в вашей программе нет catch, поэтому процесс завершается. AVC — это название стандарта видеокодека, поэтому высока вероятность того, что вы не писали этот код. IOException предполагает, что у него проблемы с чтением или записью видеопотока. Это может быть так же просто, как повреждение данных или нехватка места на диске. На этом догадки должны закончиться. 17.11.2016
  • ? Программа преобразует данные ASCII (линии, окружности, ...) в формат растрового изображения. Насколько я знаю, никакие внешние библиотеки не используются. Видео не задействовано, проблема возникает, когда определенные параметры времени выполнения установлены на ноль (поэтому это не связано с поврежденными данными) и нет проблем с местом на диске. 17.11.2016

Ответы:


1

Попробуйте перехватить код, вызывающий исключение: в MS Visual Studio 2015, Отладка -> Windows -> Настройки исключений, выберите "Исключения C++", щелкните правой кнопкой мыши "Добавить исключение ", вставьте тип исключения - "AVC_IoException"; отметьте также другие распространенные типы исключений — std::exception, CException и т. д. Отладчик остановится в той строке, где возникло исключение. Вы можете проанализировать стек. Имейте в виду, что вам, возможно, придется пропустить (т. е. попросить отладчик продолжить) нерелевантные исключения. Также рекомендуется сохранять отладочные сборки всех сторонних разработчиков, включая среду выполнения C++/C и ОС.

17.11.2016
  • Спасибо за ответ, я постараюсь использовать его, когда проблема возникнет снова: тем временем один из инженеров поддержки нашел способ обойти эту проблему, сильно снизив приоритет. 17.11.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..