RFR: 8303942: FileMapInfo::write_bytes aborts on a short os::write

Coleen Phillimore coleenp at openjdk.org
Mon Apr 3 13:13:59 UTC 2023


On Mon, 27 Mar 2023 08:04:23 GMT, Afshin Zafari <duke at openjdk.org> wrote:

> `os::write` is called in a loop until all the requested size is written. The number of bytes parameter(`size_t nbytes`) is casted to `ssize_t size` to be able to check `> 0` condition. To enable pointer arithmetic, the `const void *` is casted to `const char *` for addition and then recasted back.
> 
> ### Test
> local: hotspot:tier1
> mach5 tier1-5

Until last week when I read these bugs, I didn't realize os::write() could not write the entire requested size.  I'd like os::write() to do that and if there's ever a case of needing a partial write, add a separately awkwardly named os::write_partial().  os::write should be the non-exceptional case so it's not used by mistake if there ever was the exceptional case needed.  Maybe use os::write_partial() for the JFR case and file a separate bug for that to use os::write properly.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/13188#issuecomment-1494299649


More information about the hotspot-runtime-dev mailing list