When two logged in users are using split screen chat, for example when selecting [C]hat -> [P]rivate, and both users type simultaneously, the chat system loses random characters in either or both chat windows.
If only one user types at a time, then no characters are lost.
Designs
Child items
...
Show closed items
Linked items
0
Link issues together to show that they're related.
Learn more.
So, Ctrl-R doesn't redraw the missing characters and the problem does not happen when split-screen mode is not in use. Oh, and happens on Windows/local-disk as well.
On a whim, decided to try to spy and that also lost characters. Not sure if that really helps, but it's really starting to become a bind now. You cannot type at the same time to have a conversation, which is really the whole point of a split screen chat.
Please reproduce the issue again with debug-level log output and report back if all the characters are represented in the log messages, or not. Or if there are any errors reported reading or writing the *chat.dab files.
I have updated my BBS and keyop logged in to do a chat test. Whenever the following was displayed in the log:
Oct 21 12:54:50 bbs synchronet: term Node 3 Unexpected ansi_getxy response: ''
one of the letters he typed didn't show up on my screen.
This is the output of "brown dog jumps" that he typed as I was doing the similar phrase in upper case.
Oct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> read character 'b' from /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> read character 'r' from /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> read character 'o' from /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> read character 'w' from /sbbs/node3/chat.dabOct 21 12:54:48 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:49 bbs synchronet: term Node 1 <Nelgin> read character 'n' from /sbbs/node3/chat.dabOct 21 12:54:49 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'T' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: ''Oct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'H' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'E' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character ' ' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (space)Oct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'Q' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'U' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'I' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> read character 'C' from /sbbs/node1/chat.dabOct 21 12:54:49 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (f)Oct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (o)Oct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'K' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character ' ' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (x)Oct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'B' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'R' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'O' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'W' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (space)Oct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'N' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character ' ' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'F' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> read character 'O' from /sbbs/node1/chat.dabOct 21 12:54:50 bbs synchronet: term Node 3 <Keyop> Unexpected ansi_getxy response: '' (j)Oct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> read character 'X' from /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> read character ' ' from /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> read character 'J' from /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> wrote control character 0 (\x00) to /sbbs/node1/chat.dabOct 21 12:54:51 bbs synchronet: term Node 1 <Nelgin> read character 'u' from /sbbs/node3/chat.dabOct 21 12:54:51 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:51 bbs synchronet: term Node 1 <Nelgin> read character 'p' from /sbbs/node3/chat.dabOct 21 12:54:51 bbs synchronet: term Node 1 <Nelgin> wrote control character 0 (\x00) to /sbbs/node3/chat.dabOct 21 12:54:51 bbs synchronet: term Node 1 <Nelgin> read character 's' from /sbbs/node3/chat.dabOct 21 12:54:51 bbs synchronet: term Node 3 <Keyop> read character 'U' from /sbbs/node1/chat.dab
I put the missing characters in parentheses so you could see what I was expecting. I hope that helps solve the issue.
Interestingly, that ansi_getxy() bug was introduced just about one year ago in commit 0c441424 which says it addresses Coverity defects (which ones?). I could only find a couple NULL-dereferences that were fixed in this file in the Coverity database, so that is curious.
Anyway, this issue was filed 11 months ago, so perhaps it was a regression introduced after the release of v3.18b.