joncampbell123 / dosbox-x

DOSBox-X fork of the DOSBox project
GNU General Public License v2.0
2.76k stars 381 forks source link

Serial buffer overrun when using Windows 10 and a Serial-to-USB adapter (FTDI chipset) #3770

Open bdhirsch-code opened 2 years ago

bdhirsch-code commented 2 years ago

Describe the bug

Our application reads/writes to a serial smart card reader that exposes a virtual com port 4 to Windows 10 64-bit using a serial-to-USB adapter based on the FTDI chipset. The debugging window reported that DOSBox-X attempted to initialize the serial port (redirected to directserialport Serial1) using 38400,n,5,1, which throws an error. Although our application runs fullscreen, we have noted a serial port overrun error that causes the serial port to become unresponsive. When resizing the DOSBox-X window in windowed mode, the debugger reports serial port overrun errors every second for a couple of minutes, most likely filling the buffer until the serial port becomes unresponsive. Exiting the application and re-executing within the same DOSBox-X window evidently releases the serial port, and clears the buffer, because everything goes back to normal until the same overrun happens. Other users have reported similar events using DOSBox SVN, and it appears this bug has carried through to the X version.

I manually applied the following patch (wrapping the updatePortConfig with a conditional IF statement) which eliminated the initial 38400,n,5,1 error, but the overruns continue.

--- /cygdrive/c/Users/adamconnell.VTMDI/Downloads/dosbox-0.74/src/hardware/serialport/serialport.cpp 2010-05-10 13:43:54.000000000 -0400 +++ src/hardware/serialport/serialport.cpp 2011-07-28 11:32:54.826387700 -0400 @@ -230,8 +230,15 @@ const char const dbgtext[]={"none","odd","none","even","none","mark","none","space"}; log_ser(dbg_serialtraffic,"New COM parameters: baudrate %5.0f, parity %s, wordlen %d, stopbits %d", 1.0/bitlen1000.0f,dbgtext[(LCR&0x38)>>3],(LCR&0x3)+5,((LCR&0x4)>>2)+1); -#endif

Steps to reproduce the behaviour

  1. Attach an FTDI chipset serial-to-USB adapter to a Windows 10 computer
  2. Redirect the serial port to a com port for DOSBox-x
  3. Start DOSBox-X and resize the window

Expected behavior

We would expect the serial port to continue functioning normally without buffer overruns.

What operating system(s) this bug have occurred on?

Windows 10 Enterprise LTSC OS build 17763.3406

What version(s) of DOSBox-X have this bug?

Built it myself from the source code link on the homepage on 10/1/2022

Used configuration

Tried every imaginable configuration setting.  Nothing prevents the buffer overrun.

Output log

Logging: opened logfile 'mylog.log' successfully. All further logging will go to this file.
Win32 EnumDisplayDevices #0: name=\\.\DISPLAY1 string=Intel(R) HD Graphics 500
Win32 EnumDisplayDevices #1: name=\\.\DISPLAY2 string=Intel(R) HD Graphics 500
Win32 EnumDisplayDevices #2: name=\\.\DISPLAY3 string=Intel(R) HD Graphics 500
DOSBox-X version 2022.09.0 (Windows SDL1)
Windows keyboard layout ID is 0x0409
Host keyboard layout is now us (US English)
Mapper keyboard layout is now us (US English)
Configured windowposition: 
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
ISA BCLK: 8333333.333Hz (25000000/3)
monopal: green, 
Active save slot: 1 [Empty]
USING AVI+ZMBV
Max 1048576 sz 32768
Final 32768
MIDI:Opened device:none
Pentium CMPXCHG8B emulation is enabled
VOODOO LFB now at d0000000
Serial1: BASE 3f8h
Serial1: Opening com4
Serial2: BASE 2f8h
Serial2: Opening com1
Parallel1: BASE 378h
Error: printer is not enabled.
MPU-401 Registering I/O ports as if IBM PC MPU-401 at base 330h
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Windows: IID_ITaskbarList3 is available
VGA ROM BIOS init callback
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
DOS: ENV_KEEPFREE is below 83 bytes. DOS programs that rely on undocumented data following the environment block may break.
WARNING: No translation support (to host) for code page 0
XMS: 50 handles allocated for use by the DOS environment
COMMAND.COM env size:             720 bytes
COMMAND.COM environment block:    0x021d sz=0x002d
COMMAND.COM main body (PSP):      0x024b sz=0x009a
COMMAND.COM stack:                0x0265
pixratio 1.200, dw false, dh false
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
pixratio 1.000, dw false, dh false
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
INFO: switched to full screen mode
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (640.000 x 480.000 pixels) at (0.000 x 0.000) (169.333 x 127.000 mm) (6.667 x 5.000 in) (96.000 x 96.000 DPI)
INFO: switched to window mode
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Aspect ratio: 4 x 3  xToY=1.333 yToX=0.750
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Screen report: Method 'Win98base' (1280.000 x 800.000 pixels) at (0.000 x 0.000) (338.667 x 211.667 mm) (13.333 x 8.333 in) (96.000 x 96.000 DPI)
Serial1: Errors: Framing 0, Parity 0, Overrun RX:10 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:26 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
Serial1: Errors: Framing 0, Parity 0, Overrun RX:13 (IF0:0), TX:0, Break 0
--END OF LOG--

Additional information

No response

Have you checked that no similar bug report(s) exist?

Code of Conduct & Contributing Guidelines

bdhirsch-code commented 2 years ago

I "commented out" this line in serialport.cpp to see if the overrun was being caused by it meeting the condition (if(LCR != LCR_DIVISOR_Enable_MASK)). The overrun continued to happen so this isn't the offending line of code.

    updatePortConfig(baud_divider, LCR);
bdhirsch-code commented 2 years ago

I've been doing some more research, and the buffer overrun errors happen each time our application polls the serial port (about once/second). The errors will start to be generated after resizing the DOSBox-X window and seem to be linked to the Synchronize Time = true setting in the config. When I set Synchronize Time = false resizing the window doesn't seem to cause the issue. Perhaps there's some type of interrupt call to retrieve the BIOS time which is resetting or interfering with our application's use of the serial port.