Date: Tue, 6 Mar 2007 16:32:02 -0600 (CST) From: dan@more.net To: FreeBSD-gnats-submit@FreeBSD.org Subject: misc/110017: serial port console output garbled (patch) Message-ID: <20070306223238.BC50117055@capella.spg.more.net> Resent-Message-ID: <200703062320.l26NK4aO009688@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 110017 >Category: misc >Synopsis: serial port console output garbled (patch) >Confidential: no >Severity: non-critical >Priority: medium >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Tue Mar 06 23:20:04 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Dan D Niles >Release: FreeBSD 6.2-RELEASE-p2 i386 >Organization: MOREnet - Missouri Research and Education Network >Environment: System: FreeBSD server.net 6.2-RELEASE-p2 FreeBSD 6.2-RELEASE-p2 #0: Tue Feb 27 22:56:09 UTC 2007 root@i386-builder.daemonology.net:/usr/obj/usr/src/sys/SMP i386 Dell 2950 with console redirection on, ttyd0 enabled in /etc/ttys. >Description: When using a serial port for a console, entering a blank line, a line that starts with a '-', or a line containing only spaces causes the output to become garbled. This can result in loss of console output when you are using a console server that stores console output (such as the Cyclades AlterPath console servers). The problem has been there for a while, but is more pronounced on a Dell 1950 or 2950. >How-To-Repeat: On a Dell 2950, enable console redirection and set up ttyd0 in /etc/ttys. Connect to the serial port. Hit Enter. The output will look something like: nooo~:Woo{;>6(|uww~now~nou})|t}}t9- >Fix: Inserting a sleep(1) before the setttymode(0) inside the main for loop fixes the problem. I'm not sure _why_ it works, but I don't think it is unreasonable to have a small delay after entering invalid input. Here are two potential patches. The first one is the simplest. The second one can be used instead if a 1 sec delay is undesireable when AB or PS are set. The output might get garbled when AB or PS are set, I did not test that. If they do, the second patch would not work. --- libexec/getty/main.c.orig Tue Mar 6 15:55:35 2007 +++ libexec/getty/main.c Tue Mar 6 15:58:06 2007 @@ -295,6 +295,8 @@ /* remove any noise */ (void)tcflush(STDIN_FILENO, TCIOFLUSH); } + if (!first_sleep) + sleep(1); first_sleep = 0; setttymode(0); @@ -376,6 +378,7 @@ continue; if (name[0] == '-') { puts("user names may not start with '-'."); + oflush(); continue; } if (!(upper || lower || digit)) { And the alternate patch: --- libexec/getty/main.c.orig Tue Mar 6 15:55:35 2007 +++ libexec/getty/main.c.alt Tue Mar 6 16:06:50 2007 @@ -372,10 +372,14 @@ oflush(); alarm(0); signal(SIGALRM, SIG_DFL); - if (name[0] == '\0') + if (name[0] == '\0'){ + sleep(1); continue; + } if (name[0] == '-') { puts("user names may not start with '-'."); + oflush(); + sleep(1); continue; } if (!(upper || lower || digit)) { @@ -384,6 +388,7 @@ "invalid auto-login name: %s", AL); exit(1); } else + sleep(1); continue; } set_flags(2); >Release-Note: >Audit-Trail: >Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070306223238.BC50117055>