aboutsummaryrefslogtreecommitdiffstats
path: root/TODO
diff options
context:
space:
mode:
authorJay Berkenbilt <ejb@ql.org>2010-06-06 14:34:27 +0200
committerJay Berkenbilt <ejb@ql.org>2010-06-06 14:34:27 +0200
commit909d1d56024ce10dbb56b313fd0d402894c18049 (patch)
tree97d764c00ef972d7222ed2dc02c7e328b1a93973 /TODO
parent7559934b023cd21d17b8f6ea3263282384a9a88f (diff)
downloadqpdf-909d1d56024ce10dbb56b313fd0d402894c18049.tar.zst
another bug description
git-svn-id: svn+q:///qpdf/trunk@974 71b93d88-0707-0410-a8cf-f5a4172ac649
Diffstat (limited to 'TODO')
-rw-r--r--TODO44
1 files changed, 44 insertions, 0 deletions
diff --git a/TODO b/TODO
index b18c459e..9776c73c 100644
--- a/TODO
+++ b/TODO
@@ -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
====