I've been running the Go stress tests for a bit.
I noticed that the memory consumption was heading north of 140 GB but that the heap was
only 20 GB.
The threadRing code called from stressChannels seems to leave N-1 goroutines stuck on
reading from their in channel. The done channel stuff looks a bit... interesting.
bradfitz said: "No, it was not my intention to leak anything."
For what it's worth, trying to kill the stress test in this state blew up the 3.4.7
kernel:
[1902435.376194] BUG: soft lockup - CPU#26 stuck for 23s! [runstress:5471]
[1902435.378282] Pid: 5471, comm: runstress Not tainted
[1902435.380824] Call Trace:
[1902435.380909] [<ffffffff8112ab7e>] free_hot_cold_page_list+0x4e/0xc0
[1902435.380994] [<ffffffff8112f756>] release_pages+0x1d6/0x220
[1902435.381079] [<ffffffff8115a08e>] free_pages_and_swap_cache+0x9e/0xc0
[1902435.381164] [<ffffffff81145ebc>] tlb_flush_mmu+0x6c/0x90
[1902435.381241] [<ffffffff81145ef4>] tlb_finish_mmu+0x14/0x40
[1902435.381354] [<ffffffff8114ffb8>] exit_mmap+0xd8/0x140
[1902435.381433] [<ffffffff8116e8f6>] ? kmem_cache_free+0x116/0x130
[1902435.381513] [<ffffffff810553f7>] mmput+0x77/0x110
[1902435.381588] [<ffffffff8105c4c5>] exit_mm+0x105/0x130
[1902435.381666] [<ffffffff8105c659>] do_exit+0x169/0x8d0
[1902435.381746] [<ffffffff8117eca5>] ? mem_cgroup_bad_page_check+0x25/0x30
[1902435.381827] [<ffffffff8112a5f7>] ? free_pages_prepare+0x87/0x130
[1902435.381915] [<ffffffff8105d112>] do_group_exit+0x42/0xa0
[1902435.381997] [<ffffffff8106bf13>] get_signal_to_deliver+0x223/0x5e0
[1902435.382078] [<ffffffff81056458>] ? copy_process+0x6f8/0x1510
[1902435.382162] [<ffffffff810142c5>] do_signal+0x65/0x5d0
[1902435.382237] [<ffffffff810573ba>] ? do_fork+0xfa/0x340
[1902435.382355] [<ffffffff8119f34f>] ? alloc_fd+0x4f/0x130
[1902435.382434] [<ffffffff810148f8>] do_notify_resume+0xa8/0xf0
[1902435.382516] [<ffffffff81604aa2>] int_signal+0x12/0x17