diff options
author | Jay Berkenbilt <ejb@ql.org> | 2010-06-06 14:34:27 +0200 |
---|---|---|
committer | Jay Berkenbilt <ejb@ql.org> | 2010-06-06 14:34:27 +0200 |
commit | 909d1d56024ce10dbb56b313fd0d402894c18049 (patch) | |
tree | 97d764c00ef972d7222ed2dc02c7e328b1a93973 | |
parent | 7559934b023cd21d17b8f6ea3263282384a9a88f (diff) | |
download | qpdf-909d1d56024ce10dbb56b313fd0d402894c18049.tar.zst |
another bug description
git-svn-id: svn+q:///qpdf/trunk@974 71b93d88-0707-0410-a8cf-f5a4172ac649
-rw-r--r-- | TODO | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -1,3 +1,47 @@ +Bug +=== + + * There is a memory leak that happens whenever object A refers to + object B which refers back to object A. We have the following + pattern: + + #include "PointerHolder.hh" + + class A + { + public: + PointerHolder<A> a; + }; + + int main() + { + A a1; + a1.a = new A(); + a1.a.getPointer()->a = new A(); + a1.a.getPointer()->a.getPointer()->a = a1.a; + return 0; + } + + In order to fix this, we have to explicitly break circular + references, but we have to do this at a time that doesn't + completely destroy performance. + + To debug, configure with + + ./configure --disable-shared --disable-test-compare-images \ + CFLAGS=-g CXXFLAGS=-g + + Current code causes test failures. linearize segfaults on + hybrid-xref.pdf, and the test suite fails in various places. Maybe + because we don't do any kind of loop detection? + + Use valgrind --leak-check=full to see leak details. + + The file memory-leak.pdf is a minimal case that shows the problem. + + Files in trace having tracing to show which objects haven't been + allocated. + Next ==== |