Системная охота за ошибками? - PullRequest
3 голосов
/ 09 февраля 2010

Я недавно возился с SFML , мультимедийной библиотекой. Я использую C #, поэтому, естественно, я выбрал привязку .Net, которую вы можете получить из SVN в последней версии 2.0. Через некоторое время я заметил, что мое приложение иногда зависает при использовании объекта Text - объекта, который рисует текстурные шрифты.

Дальнейшие исследования с использованием профилировщиков и всемогущего диспетчера задач Windows показали, что простое приложение, использующее текст, казалось, каким-то образом утекло. Затем я создал ветку об SFML-форумах ( ветка ). Однако основной разработчик SFML не смог воспроизвести ошибку на своем компьютере. Думая, что я не могу быть сумасшедшим, я отправил это другу, и он сообщил, что действительно видел, как это происходит.

Я сделал пример для Лорана, разработчика SFML, но он все еще не мог воспроизвести ошибку. Думая, что это может быть связано с ОС, я отправил файл всем, кого мог, и спросил об их ОС. Вот мои результаты:

http://spreadsheets.google.com/ccc?key=0AhcHeJlLGEVUdG1TTi1mTkFxeFlHYVRISXhjbFBDUmc&hl=en

Как вы можете видеть, Turc и K7 имеют одинаковую ОС, но она не дает сбоя на K7 (таблица неполная, в которой кандидаты на тестирование еще не участвовали). В любом случае, это говорит мне о том, что это явно не проблема ОС.

Итак, мой настоящий вопрос: Какие другие факторы, кроме ОС или архитектуры, могут влиять на подобные ошибки, которые появляются только в определенных системах?

Для справки, вот файл, который я отправил своим друзьям: http://dl.dropbox.com/u/3310651/MemLeak2.rar

И скриншот профилирования, который я сделал: http://dl.dropbox.com/u/3310651/sfml_memleak.png

Спасибо!

Ответы [ 2 ]

1 голос
/ 10 февраля 2010

Я не уверен, что может быть причиной различий, но, учитывая, что вы можете воспроизвести проблему на вашем компьютере, можно было бы выяснить, почему все объекты Text находятся вокруг. Вы можете сделать это, используя библиотеку отладки "sos" и выполнив запрос, чтобы выяснить, что укореняет объекты Text. Хорошее введение в использование sos в Visual Studio доступно здесь .

Если у вас есть только Express-версия Visual Studio, вы можете использовать sos из отладчика WinDbg, который является частью Средства отладки для Windows . Другой хороший обзор, который предназначен для использования sos с WinDbg, можно найти здесь .

0 голосов
/ 13 февраля 2010

Я понял это через некоторое время, поговорив по IRC, и парни помогли мне. Собственная библиотека не была поточно-ориентированной, поэтому возникли проблемы с одновременным размещением и освобождением указанных объектов.

...