RFR (preliminary): 8202772: "NMT erroneously assumes thread stack boundaries to be page aligned"
zgu at redhat.com
Thu Jun 7 13:12:25 UTC 2018
> Next escalation would be to disable thead stack accounting just on
> AIX. Or, platforms where thread stacks have not-page-aligned
> boundaries. Or, dynamically on a by-thread base.
> Are thread stack regions merged in NMT? So, two threads laying side by
> side, could they be merged to one region with mtThreadStack attribute?
I don't think we merge individually reserved memory, but committed
memory within the same reserved memory range.
I don't think it will be hard to pull thread stacks into another
tracking list. Matter of fact, it might simplify a few things, as we
started doing something special the thread stacks, e.g. figuring out
actual stack range in used and where are guard pages.
I will file a RFE.
>>> My first attempt at fixing this (see above webrev) was to feed NMT a
>>> corrected version of the thread stack size - just the page-aligned
>>> inner portion of the stack - that way we loose a bit fidelity in NMT
>>> thread stack accounting, but at least we do not crash. That makes
>>> runtime errors go away, but there is a gtest which stubbornly refuses
>>> to heal.
>>> See CommittedVirtualMemoryTest
>>> (test/hotspot/gtest/runtime/test_committed_virtualmemory.cpp): I admit
>>> I do not fully understand this test. It seems to record the current
>>> threads stack base and size - ok - and then query the virtual regions
>>> as perceived by NMT, expecting that the stack top is at the end of a
>>> committed region. But even without the matter of unaligned stack base,
>>> could it not be that virtual regions in NMT are fused, e.g. if
>>> multiple thread stacks are placed next to each other? So, I am not
>>> sure the test if correct.
>>> Would be nice if someone with more NMT knowledge could comment.
>>> Please note: Since I do most of my development on Linux, I modified
>>> the stack base in the preliminary patch a bit to emulate the same
>>> error on Linux I get on AIX. Because AIX is a terrible platform to
>>> debug on :)
>>> Note that the VM usually is fine with unaligned stack bases - NMT is
>>> the only part I know of which has problems with that.
>>> Thanks a lot,
>>> Best Regards, Thomas
More information about the hotspot-runtime-dev