[Bug 48108] New: kernel32:comm - QEmu's serial baud rate emulation is broken
WineHQ Bugzilla
wine-bugs at winehq.org
Fri Nov 15 09:10:23 CST 2019
https://bugs.winehq.org/show_bug.cgi?id=48108
Bug ID: 48108
Summary: kernel32:comm - QEmu's serial baud rate emulation is
broken
Product: Wine-Testbot
Version: unspecified
Hardware: x86
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: unknown
Assignee: wine-bugs at winehq.org
Reporter: fgouget at codeweavers.com
Distribution: ---
kernel32:comm got a failure when running on Wine on the TestBot VM:
comm.c:932: Test failed: OutQueue should not be empty
This happens in test_waittxempty():
// Open the serial device
hcom = test_OpenComm(TRUE);
// Here it is already set to 150 bps because that's how a
// previous test left it
...
// Write 17 bytes in overlaped mode.
// At 150 bauds this should take at least 900 ms
res = WriteFile(hcom, tbuf, sizeof(tbuf), &bytes, &ovl_write);
// Leaving us plenty of time to get to
ClearCommError(hcom, &errors, &stat);
...
// And here we expect the serial device to still have data to send.
// But because QEmu sends the data at > 400 kbps this often fails
ok(stat.cbOutQue != 0, "OutQueue should not be empty\n");
That QEmu does not enforce the set baud rate can also be verified from the
command line:
# stty -F /dev/ttyS0
speed 9600 baud; line = 0;
-brkint -imaxbel
# dd if=/dev/zero of=/dev/ttyS0 bs=1 count=10000
10000+0 records in
10000+0 records out
10000 bytes (10 kB, 9.8 KiB) copied, 0.224432 s, 44.6 kB/s
# stty -F /dev/ttyS0 300
# stty -F /dev/ttyS0
speed 300 baud; line = 0;
-brkint -imaxbel
# dd if=/dev/zero of=/dev/ttyS0 bs=1 count=10000
10000+0 records in
10000+0 records out
10000 bytes (10 kB, 9.8 KiB) copied, 0.679127 s, 14.7 kB/s
Back to the kernel32:comm failure:
* It did not happen for a long time and started happening on the debian10 VM on
2019-10-03. That corresponds to the time I added the winetest user to the
dialout group, thus giving it access to /dev/ttyS0.
* The same issue happens in the Windows VMs, but the ok() call has a broken()
clause which hides the issue there.
So:
1. The bug needs to be reported to QEmu.
2. See why speeds below 9600 bps are not allowed.
3. We may want a better check for this issue: directly check that the baud rate
is respected. This would allow us to skip tests that depend on the baud rate
and ditch the broken() clause.
4. If the above does not work out the serial device should be removed from the
Wine QEmu VMs.
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list