On 4/25/18, 9:02 AM, Martin Buchholz wrote:
It would be more correct I think for Console to track if there is a
pending readPassword in progress and try to restore echo on exit only
if so. But a little annoying to implement (need an additional boolean?)
I think that is what Jan proposed "to add restoredEchoOnShutdown =
true", and I'm fine
with that. I'm just a little confused why jshell invokes
System.console() if it handles all "raw"
terminal stuff itself.
On Wed, Apr 25, 2018 at 8:52 AM, Xueming Shen <xueming.s...@oracle.com
<mailto:xueming.s...@oracle.com>> 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
<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
<https://bugs.openjdk.java.net/browse/JDK-8202105>
Webrev: http://cr.openjdk.java.net/~jlahoda/8202105/webrev.00/
<http://cr.openjdk.java.net/%7Ejlahoda/8202105/webrev.00/>
What do you think?
Thanks,
Jan