문제

나는 최근에 엉망이되었습니다 SFML, 멀티미디어 도서관. C#을 사용하므로 자연스럽게 .NET 바인딩을 사용하여 최신 2.0 버전으로 SVN에서 가져올 수 있습니다. 잠시 엉망이 된 후 나는 텍스트 객체를 사용할 때 텍스처 글꼴을 그리는 데 사용되는 텍스트 객체를 사용할 때 내 응용 프로그램이 때때로 끊어 질 것임을 알았습니다.

Profilers와 전능하신 Windows Task Manager를 사용한 추가 조사에 따르면 텍스트를 사용한 간단한 응용 프로그램은 어떻게 든 메모리를 유출하는 것처럼 보였습니다. 그런 다음 SFML 포럼에서 그것에 대해 스레드를 만들었습니다.). 그러나 SFML의 주요 개발자는 그의 컴퓨터의 버그를 재현 할 수 없었습니다. 내가 미쳤다 고 생각하면서 나는 그것을 친구에게 보냈고 그는 그가 실제로 일어나는 것을 보았다고보고했다.

나는 SFML의 개발자 인 Laurent의 예를 만들었지 만 여전히 버그를 재현 할 수 없었습니다. 이것이 OS와 관련이있을 수 있다고 생각하면서, 나는 내가 할 수있는 모든 사람에게 파일을 보냈고 그들의 OS에 대해 질문했다. 내 결과는 다음과 같습니다.

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

보시다시피, TURC와 K7은 모두 동일한 OS를 가지고 있지만 K7에서 충돌하지 않습니다 (테스트 후보자가 아직 리포지트하지 않은 경우 테이블이 불완전합니다). 어쨌든, 이것은 분명히 그것이 OS 문제가 아니라고 말합니다.

그래서 내 실제 질문은 OS 또는 아키텍처를 제외한 다른 요인은 특정 시스템에만 나타나는 버그에 영향을 줄 수 있습니까?

참고로, 여기에 친구를 보낸 파일이 있습니다.http://dl.dropbox.com/u/3310651/memleak2.rar

그리고 내가 한 프로파일 링의 스크린 샷 :http://dl.dropbox.com/u/3310651/sfml_memleak.png

감사!

도움이 되었습니까?

해결책 2

나는 IRC와 사람들이 나를 도와 준 후 잠시 후 그것을 알아 냈습니다. 기본 라이브러리는 스레드 안전하지 않았으므로 동시에 참조 된 객체를 할당 및 거래하는 데 문제가있었습니다.

다른 팁

차이점을 일으킬 수있는 이유는 확실하지 않지만 기계에서 문제를 재현 할 수 있습니다. 하나의 옵션은 모든 텍스트 객체가 왜 매달려 있는지 조사하는 것입니다. "SOS"디버깅 라이브러리를 사용하고 쿼리를 사용하여 텍스트 객체를 루팅하는 내용을 찾아서이를 수행 할 수 있습니다. Visual Studio에서 SOS 사용에 대한 좋은 소개를 사용할 수 있습니다. 여기.

Express 버전의 Visual Studio 만있는 경우 WindBG 디버거에서 SOS를 사용할 수 있습니다. Windows 용 도구 디버깅 도구. WINDBG와 함께 SOS를 사용하는 데 맞춰진 또 다른 좋은 개요를 찾을 수 있습니다. 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top