Сбой из-за необработанного исключения первого шанса на Win7 64bit (без проблем на XP 32bit, Linux 64bit)

Я столкнулся со странной проблемой при кодировании программы OpenGl с C++ под Visual Studio Express 2010.
Я использую: Windows 7 64bit, OpenGl 4.x
Мой партнер использует: Windows XP 32bit, Visual Studio Express 2010, OpenGl 2.x

До сих пор мы только рисовали вершины для наших моделей, и это прекрасно работает в обеих системах (я знаю, я знаю: устарело, но мы все еще новички). Теперь он включил библиотеку для импорта 3d-сеток и создания анимации. У него все отлично работает но я получаю

Исключение первого шанса в 0x0055f838 в Ant Simulation.exe: 0xC0000005: расположение чтения нарушения доступа 0x00bb0000.
Необработанное исключение в 0x0055f838 в Ant Simulation.exe: 0xC0000005: расположение чтения нарушения доступа 0x00bb0000.

С помощью отладчика я отследил проблему до линии

glDrawArrays(GL_QUADS,0,n_data);

Я пытался поймать код, но ничего не срабатывает. Как ни странно, вчера я мог пройти по этой строке 2-3 раза с помощью отладчика, пока он не вышел из строя, сегодня он падает напрямую. Вчера я проверил, что n_data всегда одинакова. Если я выполняю *.exe в Windows, он вылетает (код ошибки ниже). Когда мой партнер отправляет мне свой *.exe, он обычно не работает, но 1 раз я мог его запустить. Я воспроизвел ошибку на других окнах. Мы попробовали на Linux 64bit и нет проблем. Я попытался запустить его в режиме совместимости, но проблема остается той же (все еще вылетает).

Я искал вокруг и нашел это:
https://blogs.msdn.com/b/debugger/archive/2010/05/12/visual-studio-debugger-fails-to-catch-unhandled-exception-for-a-windows-form-or-wpf-application.aspx?Redirected=true

Не уверен, правильно ли я понял. Есть исключение, которое я не могу поймать, но которое убьет приложение - но почему у другой системы нет проблемы с этим исключением?

Я пытался решить ее так, как описано в ссылке, но в VS Express мне кажется, что у меня нет меню, чтобы выбросить исключения из первого шанса. Я попытаюсь получить VS 2012, но тем не менее, я хотел бы знать: действительно ли это вещь Windows или может быть проблема с моим кодом, которая вызывает сбой (как предложено в одном из комментариев в ссылке)? Я также был бы очень признателен за объяснение того, что на самом деле происходит...

Ошибка, которую я получаю при запуске *.exe:

Название проблемного события: APPCRASH

Имя приложения: Ant Simulation.exe
Версия приложения: 0.0.0.0

Метка времени применения: 511d99a3

Имя модуля неисправности: StackHash_0a9e

Версия модуля неисправности: 0.0.0.0
Временная метка модуля неисправности: 00000000

Код исключения: c0000005

Смещение исключения: 0037f278

Версия ОС: 6.1.7601.2.1.0.256.48

Locale ID: 1031

Дополнительная информация 1: 0a9e

Дополнительная информация 2: 0a9e372d3b4ad19135b953a78882e789

Дополнительная информация 3: 0a9e

Дополнительная информация 4: 0a9e372d3b4ad19135b953a78882e789

1 ответ

Решение

"Исключение первого шанса" в Windows - это не исключение C++, это означает, что система во время выполнения обнаружила недопустимое поведение вашей программы, например разыменование недействительного указателя. Фактически, "Место чтения нарушения доступа 0x00bb0000" очень многое говорит о том, что именно это и происходит.

Разыменование недействительного указателя не обязательно приводит к одинаковому поведению в разных системах или даже в разных запусках на одной машине: см. Такие вопросы, как сбой кода C в Windows, но не в Linux для получения дополнительной информации об этом. В этом случае ошибка, по-видимому, происходит внутри реализации GL, но это, вероятно, вызвано тем, что более ранний код приложения дал ему неверную информацию.

Убедитесь, что все включенные массивы вершин имеют хотя бы n_data элементы. (Будьте особенно осторожны, чтобы убедиться, что они не только n_data - 1 элементы, и это n_data содержит ожидаемое вами значение.) Также следует проверить, что все указатели, которые вы ранее передали функциям GL, действительны. Также нужно проверить гораздо больше состояния GL, но это будет мое первое предположение.

Другие вопросы по тегам