From 909d1d56024ce10dbb56b313fd0d402894c18049 Mon Sep 17 00:00:00 2001 From: Jay Berkenbilt Date: Sun, 6 Jun 2010 12:34:27 +0000 Subject: another bug description git-svn-id: svn+q:///qpdf/trunk@974 71b93d88-0707-0410-a8cf-f5a4172ac649 --- TODO | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'TODO') 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; + }; + + 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 ==== -- cgit v1.2.3-54-g00ecf