Page tables apparently don't get completely freed on 64-bit Fiasco.OC
adam at os.inf.tu-dresden.de
Thu Dec 13 16:28:33 CET 2012
On Tue Dec 11, 2012 at 21:04:14 +0100, Christian Prochaska wrote:
> When running the test case from
> https://github.com/genodelabs/genode/issues/559 on 64-bit Fiasco.OC, the
> kernel runs out of memory after the sequential construction and
> destruction of tasks. I've added some debug output to the kernel which
> tracks the kernel memory allocations and deallocations. The attached log
> files cover the creation and destruction of one task on 64-bit and
> 32-bit Fiasco.OC.
> In the 64-bit case the allocations reported in lines (05/06), (07/08),
> (12/13), (14/15), (20/21) and (24/25) don't have matching calls of
> 'free()'. These allocations belong to the 'Ptab::Walk::sync()' and
> 'Ptab::Walk::walk()' functions. It looks like only a part of the page
> table gets destroyed during 'Mem_space::dir_shutdown()'.
> In the 32-bit case the amout of memory available after the destruction
> of the task is the same as before the construction, but what I found odd
> about the log output is that the allocations reported in lines (10/11)
> and (14/15) don't have matching calls of 'free()', whereas the
> allocations reported in lines (09) and (12/13) each have two calls of
> 'free()' (in lines (22/25) and (28/32)), which makes the amount of
> memory available balanced again.
Thanks for the report. Interestingly we have found the same (or at least
very similar issue) just a few days ago. We'll look into this.
Adam adam at os.inf.tu-dresden.de
More information about the l4-hackers