On Fri, 28 Mar 2025 09:44:00 GMT, Thomas Stuefe <stu...@openjdk.org> wrote:
> > > > > > > I don't understand why we don't treat that as a fatal error OR > > > > > > > make sure that all call-sites handles that error, which they > > > > > > > don't do today. > > > > > > > > > > > > > > > > > > I think release/uncommit failures should be handled by the callers. > > > > > > Currently, uncommit failure is handled in most places by the > > > > > > caller, release failure seems mostly not. Since, at least for > > > > > > uncommit, we could sometimes fail for valid reasons, I think we > > > > > > shouldn't fail fatally in the os:: functions. > > > > > > > > > > > > > > > I would like to drill a bit deeper into this. Do you have any > > > > > concrete examples of an uncommit failure that should not be handled > > > > > as a fatal error? > > > > > > > > > > > > [`VirtualSpace::shrink_by`](https://github.com/openjdk/jdk/blob/jdk-25%2B15/src/hotspot/share/memory/virtualspace.cpp#L373) > > > > allows uncommit to fail without crashing. I'm not certain of the > > > > intention behind that. But it seems like it's because shrinking is an > > > > optimization and not always critical that it be done immediately. > > > > [[1](https://github.com/openjdk/jdk/blob/jdk-25%2B15/src/hotspot/share/gc/serial/tenuredGeneration.cpp#L258)] > > > > > > > > > The above example shows code that assumes that it is OK to fail > > > uncommitting and continuing. I'm trying to figure it that assumption is > > > true. So, what I meant was that I was looking for a concrete example of a > > > failure mode of uncommit that would be an acceptable (safe) failure to > > > continue executing from. That is, a valid failure that don't mess up the > > > memory in an unpredictable/unknowable way. > > > > > > So release/uncommit (via mmap,munmap, VirtualFree) could fail due to: ① Bad > > arguments, or ② The OS encountered an issue out of control of the JVM. > > ① JVM bug. Reasonable to fatally fail here. Or the caller could be > > intentionally passing arguments that may or may not be valid. I don't think > > there is any code like that currently. > > ② The only errors that aren't due to bad arugments are ENOMEM and ones > > related to file descriptors (which are not applicable to uncommit). > > VirtualFree only fails due to bad arguments according to windows docs. > > So if there's consensus that ENOMEM is not recoverable (or rare enough to > > not worry about), then it seems like its OK to fatally fail in all > > scenarios. > > +1 > > Thanks for investigating the details of this (also nothing we couldn't change > later if it bugs us). +1 ------------- PR Comment: https://git.openjdk.org/jdk/pull/24084#issuecomment-2766054807