nvaccess / nvda

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

Firefox: NVDA gives multiple errors when page loads after entering a URL in a new tab #11351

Open bhavyashah opened 4 years ago

bhavyashah commented 4 years ago

Steps to reproduce:

1 Launch Firefox and press Ctrl+T to open a new blank tab. 2 Enter any URL, say facebook.com. 3 Press Enter.

Actual behavior:

NVDA gives a bunch of error sounds after pressing Enter and before the page loads and NVDA initiates its say all. A bunch could mean as few as 0 or 1 and as many as 8. From a user's perspective though, I don't think anything is amiss UX wise.

ERROR - speech.manager.SpeechManager._handleIndex (23:27:36.136) - MainThread (6076):
Error running speech callback
Traceback (most recent call last):
  File "speech\manager.pyc", line 669, in _handleIndex
  File "speech\commands.pyc", line 326, in run
  File "sayAllHandler.pyc", line 155, in _onLineReached
  File "sayAllHandler.pyc", line 204, in lineReached
  File "documentBase.pyc", line 24, in makeTextInfo
  File "virtualBuffers\__init__.pyc", line 207, in __init__
  File "textInfos\offsets.pyc", line 460, in __init__
  File "virtualBuffers\__init__.pyc", line 225, in _getStoryLength
OSError: [WinError 1775] A null context handle was passed from the client to the host during a remote procedure call

Expected behavior:

NVDA should not give any errors, and certainly not so many.

Note

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

2020.2 Beta 2

Windows version:

8.1

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

Firefox 78.0.1

Other information about your system:

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.

No

If addons are disabled, is your problem still occuring?

Yes

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

No Firefox Multiple Errors.txt

Neurrone commented 4 years ago

CC: @MarcoZehe or @jcsteh

I always see this on Windows 10 in 1909 and 2004 as well.

MarcoZehe commented 4 years ago

I cannot reproduce. Does this only happen with eSpeak, or also with Microsoft OneCore voices, @Neurrone ? Or which synth are you using?

Adriani90 commented 4 years ago

I can reproduce this, only when read page after page load is enabled in browse mode settings. The error is as follows:

ERROR - speech.manager.SpeechManager._handleIndex (23:36:11.776) - MainThread (4916):
Error running speech callback
Traceback (most recent call last):
  File "speech\manager.pyc", line 669, in _handleIndex
  File "speech\commands.pyc", line 326, in run
  File "sayAllHandler.pyc", line 155, in _onLineReached
  File "sayAllHandler.pyc", line 204, in lineReached
  File "documentBase.pyc", line 24, in makeTextInfo
  File "virtualBuffers\__init__.pyc", line 207, in __init__
  File "textInfos\offsets.pyc", line 460, in __init__
  File "virtualBuffers\__init__.pyc", line 225, in _getStoryLength
OSError: [WinError 1775] Ein NULL-Kontexthandle wurde während eines Remoteprozeduraufrufs vom Client an den Host übergeben
DEBUG - sayAllHandler._TextReader.nextLine (23:36:13.171) - MainThread (4916):
no self.reader

@feerrenrut this is only reproducible when cancelable speech is turned on in advanced settings.

bhavyashah commented 4 years ago

I am able to reproduce this issue only when say all in browse mode is enabled as well. However, I would differ in that I have the Attempt to cancel speech for expired focus events combo box set to Default (No) when encountering these errors.

On 7/9/20, Adriani90 notifications@github.com wrote:

I can reproduce this, only when read page after page load is enabled in browse mode settings.

The error is as follows:


ERROR - speech.manager.SpeechManager._handleIndex (23:36:11.776) -
MainThread (4916):

Error running speech callback

Traceback (most recent call last):

  File "speech\manager.pyc", line 669, in _handleIndex

  File "speech\commands.pyc", line 326, in run

  File "sayAllHandler.pyc", line 155, in _onLineReached

  File "sayAllHandler.pyc", line 204, in lineReached

  File "documentBase.pyc", line 24, in makeTextInfo

  File "virtualBuffers\__init__.pyc", line 207, in __init__

  File "textInfos\offsets.pyc", line 460, in __init__

  File "virtualBuffers\__init__.pyc", line 225, in _getStoryLength

OSError: [WinError 1775] Ein NULL-Kontexthandle wurde während eines
Remoteprozeduraufrufs vom Client an den Host übergeben

DEBUG - sayAllHandler._TextReader.nextLine (23:36:13.171) - MainThread
(4916):

no self.reader

@feerrenrut this is only reproducible when cancelable speech is turned on in advanced settings.

--

You are receiving this because you authored the thread.

Reply to this email directly or view it on GitHub:

https://github.com/nvaccess/nvda/issues/11351#issuecomment-655772923

-- Best Regards Bhavya Shah

Blogger at Hiking Across Horizons: https://bhavyashah125.wordpress.com/ E-mail Address: bhavya.shah125@gmail.com LinkedIn: https://www.linkedin.com/in/bhavyashah125/

feerrenrut commented 4 years ago

I can't see how this is related to the cancelable speech setting. I will add the English error (and stack) taken from the attached log to the description of this issue.

ERROR - speech.manager.SpeechManager._handleIndex (23:27:36.136) - MainThread (6076):
Error running speech callback
Traceback (most recent call last):
  File "speech\manager.pyc", line 669, in _handleIndex
  File "speech\commands.pyc", line 326, in run
  File "sayAllHandler.pyc", line 155, in _onLineReached
  File "sayAllHandler.pyc", line 204, in lineReached
  File "documentBase.pyc", line 24, in makeTextInfo
  File "virtualBuffers\__init__.pyc", line 207, in __init__
  File "textInfos\offsets.pyc", line 460, in __init__
  File "virtualBuffers\__init__.pyc", line 225, in _getStoryLength
OSError: [WinError 1775] A null context handle was passed from the client to the host during a remote procedure call
jcsteh commented 4 years ago

That error 1775 occurs when NVDA is trying to read from a buffer which has died. Here's why it's happening in this case:

  1. The user presses control+t to open a new tab.
  2. The new tab document loads, but focus is placed on the address bar, so NVDA doesn't create a buffer for the document.
  3. The user types an address and presses enter.
  4. The document area gets focus.
  5. Because the new document the user requested in step 3 isn't loaded yet, the new tab document (step 2) gets focus and NVDA starts to say all.
  6. The document the user requested in step 3 loads. The new tab document dies.
  7. NVDA is still trying to say all on the new tab document (step 5), but it's now dead.
  8. OSError 1775!
jcsteh commented 4 years ago

One question is why the say all isn't cancelled when the new document gets focus.

MarcoZehe commented 4 years ago

I saw this today. I was loading another Github issue and the focus was supposed to go straight to a comment. I even filed a bug on it, which is a duplicate of this one, which I had forgotten about (see above. My traceback, for completeness, is here:

ERROR - speech.manager.SpeechManager._handleIndex (12:31:15.124) - MainThread (25656):
Error running speech callback
Traceback (most recent call last):
  File "speech\manager.pyc", line 669, in _handleIndex
  File "speech\commands.pyc", line 326, in run
  File "sayAllHandler.pyc", line 164, in _onLineReached
  File "sayAllHandler.pyc", line 213, in lineReached
  File "documentBase.pyc", line 24, in makeTextInfo
  File "virtualBuffers\__init__.pyc", line 207, in __init__
  File "textInfos\offsets.pyc", line 477, in __init__
  File "virtualBuffers\__init__.pyc", line 225, in _getStoryLength
OSError: [WinError 1775] Ein NULL-Kontexthandle wurde während eines Remoteprozeduraufrufs vom Client an den Host übergeben

I was opening this link in a new tab. The error occurred after the page appeared on my braille display, and focus was somewhere near the comment entry form.