After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 154250 - Speech will be stopped when gnopernicus runs for a period of time.
Speech will be stopped when gnopernicus runs for a period of time.
Status: RESOLVED FIXED
Product: gnopernicus
Classification: Deprecated
Component: speech
unspecified
Other Solaris
: Normal critical
: ---
Assigned To: mp
mp
AP1
: 154855 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2004-10-01 15:14 UTC by John Crawley
Modified: 2004-12-22 21:47 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
proposed patch (941 bytes, patch)
2004-10-12 12:35 UTC, remus draica
none Details | Review

Description John Crawley 2004-10-01 15:14:06 UTC
Steps to reproduce:

1. Launch gnopernicus and evolution.

2. Run some evolution operations with keyboard, such as changing the settings,
composing new messages etc.. Do not wait for gnopernicus speech after every
steps you fulfill.



Bug observation:

After a period of time, gnopernicus will speak nothing, but brlmonitor is still
running correctly.
Comment 1 bill.haneman 2004-10-01 15:16:32 UTC
dup of 153416?
Comment 2 Dana Ormenisan 2004-10-04 07:09:23 UTC
I believe this is a duplicate of bug #153416. John, can you check this? Can you
provide a core file after speech dies?
Comment 3 remus draica 2004-10-05 11:09:50 UTC
John, is any message displayed by gnopernicus in its terminal?
Comment 4 bill.haneman 2004-10-06 11:15:42 UTC
increasing to AP0 since this effectively renders the desktop useless for the
speech user.
Comment 5 Dana Ormenisan 2004-10-08 06:33:00 UTC
*** Bug 154855 has been marked as a duplicate of this bug. ***
Comment 6 remus draica 2004-10-12 12:35:34 UTC
Created attachment 32508 [details] [review]
proposed patch
Comment 7 bill.haneman 2004-10-12 15:14:48 UTC
reducing severity to AP1 because test reports that the bug is less troublesome
than before, and that pressing Ctrl (i.e. shutup) seems to jolt the system back
in to working properly.
Comment 8 Alexandra Telescu 2004-10-12 15:39:47 UTC
The patch seems to solve the problem for Linux systems.
Comment 9 bill.haneman 2004-10-12 15:52:10 UTC
Wasn't the problem reported mostly on Solaris systems?
Comment 10 Alexandra Telescu 2004-10-12 16:03:33 UTC
Yes, but yesterday, after I install the new system, build 20, I observe the same
problem on Linux systems. Also Ctrl left seems to make speech start again. 
It is not easy to reproduce this bug, because it is not present after a fix
number of steps and not in the same point, but with this patch applied I was not
able to reproduce it.
Comment 11 Dana Ormenisan 2004-10-13 10:25:59 UTC
The patch provided by Remus at comment #6 solves the speech problem on Solaris
systems. I tested this patch with both 'kevin' and 'kevin 16' voices and speech
does not stop working anymore. 
Comment 12 Dana Ormenisan 2004-10-13 16:50:39 UTC
Patch applied to CVS head and gnome-2-8 branch.
Comment 13 remus draica 2004-10-14 07:20:02 UTC
In some condition is possible to have following scenario:

send text 1 to freetts                  (*)
receive start marker for text 1
send shutup for text 1                  (!)
send text 2 to freetts                 (**)
receive end marker for text 1 /* ------- root of the bug-------- */ (!!)
receive start marker for text 2
receive end marker for text 2
/* from here gnopernicus stops to speak */


The explanation is:
When a string is sent to freetts (gnome-speech in general) some information 
are added to a queue (implemented by srs_gs_outs list). The information is 
removed when a shutup command is sent to speech or when an end marker for the 
information is received.

In our case, the information is put in queue for send command (*) and removed 
for shutup command (!). New information are put for second send command (**).
When end marker is received (!!) the information for text 2 is removed 
(_wrong_) and now the queue is now empty, even freetts is speaking. When 
markers for text 2 are received , they are rejected because the queue is 
empty.

So, the solution is to remove information from queue for an end of speech 
marker ONLY if the marker is for text for which information is, otherwise it 
is for previous information and has no interest.