-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
メモリ・リーク検出機能の追加とリーク発見 #40
Comments
思っていたより時間がかかっており、中間報告です。 1.msvc検出したリークは解決できました。ただし、デバッグ・モードでのみ検出なので少し心配なため、リリース・ビルドでも検出できるgccでの検出を進めています。 2.gcc2-1.mtracemtraceでトライしていたのですがうまくいきません。 staticなローカル変数を各所で使っており、mtrace後にコンストラクトされたstaticローカル変数のデストラクタが呼ばれた後にmuntrace()する必要があります。 2-2.valgrind組み込みできました。リークは検出されません。 3.mingwほぼ同じソースですので、メモリ・リークしない筈ですが、可能であれば検出テストを導入したいです。しかし、リーク検出する機構を見つけることができていません。 |
gccバージョンでメモリ・リーク顕在化msvcはデバッグ・ビルドしかリーク検出できません。reference_and_testの配下のテストは非常に思いため、デバッグ・ビルドしていないため顕在化しませんでしたが、valgrindでテストすることで顕在化しました。 reference_and_test/basic2にてtutoriseObjectTracking()で2箇所、tutorisePolymorphism()で4箇所発生します。 tutorisePolymorphism()については、思いっきり解放忘れです。newの後、解放していませんでした。 travis-ciでvalgrind周りでエラーtravis-ciにはvalgrindが入っていません。しかし、valgrindの有無判定ロジックが無いことを検出するのに失敗し、valgrindを起動しエラーになっていました。 |
v1.1.3としてリリースしたのでクローズします。 |
メモリ・リーク検出をmsvc向けに導入していたのですが、事情によりオープンβ開始時に一旦削除していました。それを回復したところ、特殊なケースですがリークが見つかりました。
オーナーポインタp, qがシリアライズ時に同じインスタンスを指していたとします。
そのデータをデシリアライズする際に、オーナーポインタpとqが異なるインスタンスを指していた場合にqが指していたインスタンスの解放漏れが見つかりました。
この不具合は早期に修正します。
またgcc用にもリーク検出を追加する予定です。
The text was updated successfully, but these errors were encountered: