RFR: JDK-8292351: tty should always live [v4]

Thomas Stuefe stuefe at openjdk.org
Wed Aug 17 14:28:19 UTC 2022


On Wed, 17 Aug 2022 09:30:48 GMT, Thomas Stuefe <stuefe at openjdk.org> wrote:

>> The default stream object tty is used in many places but its lifetime is limited. It gets born not-quite at the beginning of VM initialization and dies in DestroyVM. This leaves time windows before VM initialization and after VM cleanup where logging to tty crashes.
>> 
>> This has been bugging me in the past, especially when wanting to use tty in code that runs very early (NMT preinit system, for example), and also causes problems for code that runs post-cleanup. Mostly this affects logging and error logging.
>> 
>> tty should always be safe to write to, and that is trivial to do.
>
> Thomas Stuefe has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Change comment

After looking at `VMError::report_and_die`, I see we redirect error output in case of a crash to hard-wired stdout, we don't use tty. Before this patch, if we accessed tty after VM destruction, we would have printed an error report to stdout. Therefore my initial patch, using stdout hard-wired, was correct and would not have broken compatibility. The only difference would have been that instead of writing a useless "SIGSEGV" crash report to stdout we would have written a useful message to stdout.

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

PR: https://git.openjdk.org/jdk/pull/9874


More information about the hotspot-dev mailing list