RFR: JDK-8202105: jshell tool: on exiting, terminal echo is disabled
Jan Lahoda
jan.lahoda at oracle.com
Wed Apr 25 20:34:33 UTC 2018
Hi Sherman,
JShell uses two processes - the main one interacts with the terminal and
compiles the user's snippets. The other one runs the snippets, and is
not connected to a terminal, so System.console() does not work there.
IIRC the call to System.console() in jshell/jline that is part of this
problem is basically a way to call Console.istty() - the returned
Console is not used. I was considering tweaking jshell to avoid this
issue, and I think it would be possible, but seemed some other programs
might run into issues as well, so seemed better to fix in Console.
Jan
On 25.4.2018 17:52, Xueming Shen wrote:
>
> Hi Jan,
>
> I saw System.console() returns null inside jshell ... but it seems there
> are 2 vms.
> I would assume jshell itself sets the terminal to raw and then call
> System.console()?
> for example an alternative for this issue is to ask jshell's impl to
> call System.console()
> before going into raw mode? No, I'm not saying the proposed one is not a
> good one,
> just wanted to make sure I understand the situation correctly.
>
> Thanks,
> Sherman
>
>
> On 4/25/18, 4:50 AM, Jan Lahoda wrote:
>> Hi,
>>
>> Under:
>> https://bugs.openjdk.java.net/browse/JDK-8194750
>>
>> j.i.Console was changed to capture the state of the terminal echo at
>> creation time, and to restore it on shutdown.
>>
>> That is problematic at least in jshell, where the terminal is already
>> in the raw mode when j.i.Console is created, and so "echo disabled" is
>> recorded there. So even though jshell itself sets the terminal into
>> the original mode when it terminates, the shutdown hook in
>> j.i.Console, which is run later, sets the echo to off even if it was
>> enabled before the VM started.
>>
>> My understanding is that the shutdown hook is only needed in case the
>> VM goes down while readPassword is running. So I tried to change the
>> shutdown hook to only work while readPassword is running.
>>
>> Bug: https://bugs.openjdk.java.net/browse/JDK-8202105
>> Webrev: http://cr.openjdk.java.net/~jlahoda/8202105/webrev.00/
>>
>> What do you think?
>>
>> Thanks,
>> Jan
>
More information about the core-libs-dev
mailing list