From 2e1fe1fcf93c2a77805048bea5c535ca4456d583 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Sun, 16 Jun 2013 09:55:44 -0400 Subject: Implement a real OOM-killer for too-long circuit queues. This implements "algorithm 1" from my discussion of bug #9072: on OOM, find the circuits with the longest queues, and kill them. It's also a fix for #9063 -- without the side-effects of bug #9072. The memory bounds aren't perfect here, and you need to be sure to allow some slack for the rest of Tor's usage. This isn't a perfect fix; the rest of the solutions I describe on codeable. --- changes/bug9063_redux | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 changes/bug9063_redux (limited to 'changes') diff --git a/changes/bug9063_redux b/changes/bug9063_redux new file mode 100644 index 000000000..e6fae72ef --- /dev/null +++ b/changes/bug9063_redux @@ -0,0 +1,15 @@ + o Major bugfixes: + - When we have too much memory queued in circuits (according to a new + MaxMemInCellQueues option), close the circuits consuming the most + memory. This prevents us from running out of memory as a relay if + circuits fill up faster than they can be drained. Fixes + bug 9063; bugfix on the 54th commit of Tor. This bug is a further + fix beyond bug 6252, whose fix was merged into 0.2.3.21-rc. + + Also fixes an earlier approach taken in 0.2.4.13-alpha, where we + tried to solve this issue simply by imposing an upper limit on the + number of queued cells for a single circuit. That approach proved to + be problematic, since there are ways to provoke clients to send a + number of cells in excess of any such reasonable limit. + Fixes bug 9072; bugfix on 0.2.4.13-alpha. + -- cgit v1.2.3