Your message dated Sun, 27 Sep 2020 17:18:58 +0000
with message-id <[email protected]>
and subject line Bug#969488: fixed in speechd-up 0.5~20110719-10
has caused the Debian Bug report #969488,
regarding Assertion failed when speaking some Unicode characters
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
969488: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969488
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: speechd-up
Version: 0.5~20110719-9

SYMPTOMS

I ran into a failed assertion.  When pressing certain Unicode
characters like U+20AC (EURO SIGN) or U+2192 (RIGHTWARDS ARROW) on the
console via a keyboard, speechd-up exits suddenly.  The same happens
when moving the cursor over a Unicode character in a text editor or on
a readline prompt.  I first ran into this under Buster.

DIAGNOSIS

>From strace:

...
write(2, "speechd-up: speechd-up.c:457: parse_buf: Assertion `bytes <= 
BUF_SIZE' failed.\n", 79) = 79
...

WORKAROUND

The problem only manifests when speechd-up is started with the default
command line "speechd-up -l1".  Putting this into
/etc/default/speechd-up prevents the bug from being triggered:
DAEMON_OPTS="$DAEMON_OPTS -D/dev/softsynthu -cUTF-8"

ANALYSIS

The error is in speechd-up.c:main():

750 ...
751             chars_read = read(fd, buf, BUF_SIZE);
752             if (chars_read < 0) {
753 ...

chars_read is declared as size_t, but read() returns ssize_t, thus a
failed read returning -1 (errno==11/EAGAIN in my case) triggers the
assertion in parse_buf().

The patch fixes the error and also adds code to retry the read after a
short delay.
--- speechd-up-0.5~20110719/speechd-up.c	2020-09-02 21:05:47.357273940 +0200
+++ speechd-up-0.5~20110719/speechd-up.c	2020-09-02 21:07:45.929271575 +0200
@@ -631,6 +631,7 @@
 int main(int argc, char *argv[])
 {
 	size_t chars_read;
+	ssize_t chars_read_signed;
 	char buf[BUF_SIZE + 1];
 	int ret;

@@ -748,11 +749,20 @@
 			close(fd);
 			return -1;
 		}
-		chars_read = read(fd, buf, BUF_SIZE);
-		if (chars_read < 0) {
-			FATAL(5, "read() failed");
-			close(fd);
-			return -1;
+		chars_read_signed = read(fd, buf, BUF_SIZE);
+		if (chars_read_signed < 0) {
+			if (errno == EAGAIN) {
+				LOG(5, "read() failed with EAGAIN, retrying");
+				usleep(1000);
+				continue;
+			} else {
+				FATAL(5, "read() failed with %d,%s",
+				      errno, strerror(errno));
+				close(fd);
+				return -1;
+			}
+		} else {
+			chars_read = chars_read_signed;
 		}
 		buf[chars_read] = 0;
 		LOG(5, "Main loop characters read = %d : (%s)", chars_read,

--- End Message ---
--- Begin Message ---
Source: speechd-up
Source-Version: 0.5~20110719-10
Done: Samuel Thibault <[email protected]>

We believe that the bug you reported is fixed in the latest version of
speechd-up, which is due to be installed in the Debian FTP archive.

A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to [email protected],
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Samuel Thibault <[email protected]> (supplier of updated speechd-up package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing [email protected])


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Format: 1.8
Date: Sun, 27 Sep 2020 19:09:55 +0200
Source: speechd-up
Binary: speechd-up speechd-up-dbgsym
Architecture: source
Version: 0.5~20110719-10
Distribution: unstable
Urgency: medium
Maintainer: Debian Accessibility Team <[email protected]>
Changed-By: Samuel Thibault <[email protected]>
Description:
 speechd-up - Interface between Speech Dispatcher and SpeakUp
Closes: 969488
Changes:
 speechd-up (0.5~20110719-10) unstable; urgency=medium
 .
   * control: Bump Standards-Version to 4.5.0 (no change)
   * control: Bump debhelper compat to 12.
   * patches/unicode: Fix assertion failed when speaking some Unicode
     characters (Closes: Bug#969488)
Checksums-Sha1:
 e83781663a733c9f0405ec33c2e390c47e15c8d5 2126 speechd-up_0.5~20110719-10.dsc
 e288e7a4b5d696be1ccc2e35f8e1c8b1b9f6e91c 8628 
speechd-up_0.5~20110719-10.debian.tar.xz
Checksums-Sha256:
 32b4537b75963641f17612160f105b4f20290b8df6e30cc3d43e27dede70819d 2126 
speechd-up_0.5~20110719-10.dsc
 ac89fe2310c3a6c791d31d2f721d1e367bc74098926c7fc96948b5c69fea9925 8628 
speechd-up_0.5~20110719-10.debian.tar.xz
Files:
 927d3b95cdd4780fa6a85b843d6f06c8 2126 admin optional 
speechd-up_0.5~20110719-10.dsc
 d6bcdbcf1f3846b20b283b79b75ffecc 8628 admin optional 
speechd-up_0.5~20110719-10.debian.tar.xz

-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEaBSUQh8zBGvGomB+DvXG2q7gS7IFAl9wyAQACgkQDvXG2q7g
S7KdPg//edMNF+A3KaLy/MGEW+KkbBdQEZNGr8rXK+SMCG3YgF/9Y82q+CpIxYyn
7bkqExf/bFBI3dmjWNC5QC1QR6cYJ+LvjAqoVcZZmTVq8+WCpNWmDC0HJZLkVPj6
w/JL60WxXs3XGqftc4+qXwGwsV7NZikHJNpimEB1Igxixb17r7xVL1XWZ6Gr+Kct
588YHWjwyCfOUrKFfme0kkjjFJSjNl0YdIVShSd3+CUANi2eZgp4oWqUs4EX1zIG
70L84l8o+H1xwKrKqvXiv7MlAMe2LVh7eLdeXK9J4CaF5BRszm5JWSsfjjmqC0LO
DKjLImnu2bYWppkYwzkhkw7+A3Mc0/cRDct/dXy2Kea8bKJQycVZ0YrDhNlWkY8z
WKjHm2LqrV/w+HLh+Cgdj+w8NnOrF6GeBiImT/u40aXwVvqM93uQX6W71IjGvaZU
PP7phWUASjdZXi9sioFw0PfpSzHHV+Km3APU0zbZggs8QgPdVMaBUsSlE8TmWmTk
B6A5S5OZVzIRi4+HF+9AU9sH0fpVFo2NpUhb2QOhF4hE2mW0SMMh/3rMFIOcP0KX
TadLrBSUw6WSHxth2JH0ERaIiAGw3Cy8kczVOLGveO9rReeyRCogCrOqYvcAGC+T
ItrNq3axYeJEhwWwYiWETFienVAvw4fCPamuZ8DKFZ9HdMMkAHs=
=/SeT
-----END PGP SIGNATURE-----

--- End Message ---

Reply via email to