nvaccess / nvda

NVDA, the free and open source Screen Reader for Microsoft Windows
https://www.nvaccess.org/
Other
2.12k stars 638 forks source link

NVDA seems to have lost the ability to recover from a lost audio device #11490

Closed Mohamed00 closed 4 years ago

Mohamed00 commented 4 years ago

Possibly related to #11482.

Steps to reproduce:

  1. Perform the steps to reproduce in #11482, by installing RHVoice, and then switching to ESpeak and back to RHVoice again. If the error doesn't occur after a few seconds, you may need to try it again, pressing the control key quickly after you switch synths, for example switch to ESpeak, press control quickly, and then switch to RHVoice and press control again.
  2. Restart the Windows Audio service. This is sometimes useful for some programs or resolving audio issues.

    Actual behavior:

    Repeated device handle is invalid errors are logged and NVDA can lose the ability to speak. Here is a log fragment. ERROR - queueHandler.flushQueue (08:59:19.701) - MainThread (1640): Error in func cancelSpeech Traceback (most recent call last): File "C:\Users\Owner\AppData\Roaming\nvda\addons\RHVoice\synthDrivers\RHVoice__init.py", line 850, in cancel self.tts_queue.get_nowait() File "queue.pyc", line 198, in get_nowait File "queue.pyc", line 167, in get _queue.Empty

During handling of the above exception, another exception occurred:

Traceback (most recent call last): File "queueHandler.pyc", line 55, in flushQueue File "speech__init.pyc", line 146, in cancelSpeech File "speech\manager.pyc", line 737, in cancel File "C:\Users\Owner\AppData\Roaming\nvda\addons\RHVoice\synthDrivers\RHVoice\init.py", line 854, in cancel self.player.stop() File "C:\Users\Owner\AppData\Roaming\nvda\addons\RHVoice\synthDrivers\RHVoice__init__.py", line 289, in stop player.stop() File "nvwave.pyc", line 331, in stop File "nvwave.pyc", line 298, in _idleUnbuffered File "nvwave.pyc", line 253, in sync File "nvwave.pyc", line 90, in _winmm_errcheck OSError: [Errno 5] The specified device handle is invalid.

Expected behavior:

NVDA should e able to recover from the lost audio device.

System configuration

NVDA installed/portable/running from source:

Installed.

NVDA version:

alpha-20725,d7e80693.

Windows version:

Windows 10, version 10.0.20190 Build 20190.

Name and version of other software in use when reproducing the issue:

N/a

Other information about your system:

N/a.

Other questions

Does the issue still occur after restarting your computer?

Yes.

Have you tried any other versions of NVDA? If so, please report their behaviors.

Yes, this does not happen in 2020.2. Another regression introduced by #11024, perhaps?

If addons are disabled, is your problem still occuring?

Yes.

Did you try to run the COM registry fixing tool in NVDA menu / tools?

N/a.

lukaszgo1 commented 4 years ago

cc @jcsteh

Mohamed00 commented 4 years ago

Additional. This does not happen if NVDA is put into sleep mode before the service is restarted.