Skip to content

Vertical navigation: offset too big for buffer causes NVDA to freeze for a while at least for 8 seconds for every key press #16382

@Adriani90

Description

@Adriani90

Steps to reproduce:

  1. Running NVDA, open this website, but it happens on many websites:
    https://ci.appveyor.com/project/NVAccess/nvda
  2. While in browse mode, assign an input gesture for vertical navigation, e.g. nvda+alt+up and down arrow keys
  3. Navigate to the current build
    4.1. Navigate vertically starting from the last pull request displayed there
    4.2. Go to the console where you can see the building process, and start vertical navigation from there.

Actual behavior:

in 4.1, NVDA freezes after a while even it doesn't find any further vertically aligned elements on the screen. Following is written to the log:

IO - inputCore.InputManager.executeGesture (07:25:27.899) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
IO - speech.speech.speak (07:25:27.940) - MainThread (13164):
Speaking ['Link', 'master', ' ', 'Link', '20342a38', ' ']
IO - inputCore.InputManager.executeGesture (07:25:29.235) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:29.749) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - inputCore.InputManager.executeGesture (07:25:35.953) - winInputHook (5656):
Input: kb(laptop):downArrow
IO - speech.speech.speak (07:25:37.460) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
IO - speech.speech.speak (07:25:37.464) - MainThread (13164):
Speaking ['Link', '20342a38', ' ']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:25:37.469) - Dummy-9 (8952):
Thread 20760, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:37.757) - watchdog (8260):
Recovered from potential freeze after 8.508360700041521 seconds.
IO - inputCore.InputManager.executeGesture (07:25:38.952) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:39.462) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - inputCore.InputManager.executeGesture (07:25:40.911) - winInputHook (5656):
Input: kb(laptop):downArrow
IO - speech.speech.speak (07:25:47.335) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
IO - speech.speech.speak (07:25:47.335) - MainThread (13164):
Speaking ['15 min 57 sec ']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:25:47.339) - Dummy-9 (8952):
Thread 7072, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:47.474) - watchdog (8260):
Recovered from potential freeze after 8.511709100042935 seconds.
IO - inputCore.InputManager.executeGesture (07:25:48.405) - winInputHook (5656):
Input: kb(laptop):upArrow
IO - speech.speech.speak (07:25:48.413) - MainThread (13164):
Speaking ['Link', '20342a38', ' ']
IO - inputCore.InputManager.executeGesture (07:25:48.806) - winInputHook (5656):
Input: kb(laptop):downArrow
IO - speech.speech.speak (07:25:48.810) - MainThread (13164):
Speaking ['15 min 59 sec ']
IO - inputCore.InputManager.executeGesture (07:25:49.267) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:49.781) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - inputCore.InputManager.executeGesture (07:25:49.882) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
IO - inputCore.InputManager.executeGesture (07:25:50.323) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
IO - inputCore.InputManager.executeGesture (07:25:50.513) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
IO - inputCore.InputManager.executeGesture (07:25:50.682) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
IO - inputCore.InputManager.executeGesture (07:25:51.442) - winInputHook (5656):
Input: kb(laptop):upArrow
IO - speech.speech.speak (07:25:58.051) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:25:58.059) - Dummy-9 (8952):
Thread 7072, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67982 too big for buffer, returning false

IO - inputCore.InputManager.executeGesture (07:25:58.165) - winInputHook (5656):
Input: kb(laptop):upArrow
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:58.288) - watchdog (8260):
Recovered from potential freeze after 9.007131499995012 seconds.
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:25:58.564) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (07:26:06.715) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:26:06.723) - Dummy-9 (8952):
Thread 12500, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:07.071) - watchdog (8260):
Recovered from potential freeze after 9.007925099984277 seconds.
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:07.230) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (07:26:14.833) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:26:14.841) - Dummy-9 (8952):
Thread 12500, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:15.241) - watchdog (8260):
Recovered from potential freeze after 8.511239100014791 seconds.
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:15.341) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (07:26:22.700) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:26:22.708) - Dummy-8 (4976):
Thread 12500, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:22.850) - watchdog (8260):
Recovered from potential freeze after 8.009069300023839 seconds.
DEBUG - watchdog._waitUntilNormalCoreAliveTimeout (07:26:23.200) - watchdog (8260):
Potential freeze, waiting up to 10 seconds.
IO - speech.speech.speak (07:26:31.128) - MainThread (13164):
Speaking ['no next vertically aligned paragraph']
IO - speech.speech.speak (07:26:31.132) - MainThread (13164):
Speaking ['Link', '20342a38', ' ']
DEBUGWARNING - RPC process 4736 (firefox.exe) (07:26:31.136) - Dummy-8 (4976):
Thread 12500, build\x86_64\vbufBase\storage.cpp, VBufStorage_buffer_t::getLineOffsets, 1068:
Offset of 67983 too big for buffer, returning false

IO - speech.speech.speak (07:26:31.144) - MainThread (13164):
Speaking ['Link', 'master', ' ']

In 4.2, following error is sometimes displayed and NVDA is silent when landing on the vertically aligned element:

IO - inputCore.InputManager.executeGesture (07:35:58.438) - winInputHook (5656):
Input: kb(laptop):NVDA+alt+downArrow
DEBUGWARNING - NVDAObjects.IAccessible.IAccessible._get_IAccessibleRole (07:35:58.448) - MainThread (13164):
accRole failed: (-2147024809, 'Falscher Parameter.', (None, None, None, 0, None))
ERROR - scriptHandler.executeScript (07:35:58.450) - MainThread (13164):
error executing script: <bound method BrowseModeTreeInterceptor.addQuickNav.<locals>.<lambda> of <virtualBuffers.gecko_ia2.Gecko_ia2 object at 0x05C7AB70>> with gesture 'NVDA+Alt+Pfeiltaste nach unten'
Traceback (most recent call last):
  File "scriptHandler.pyc", line 295, in executeScript
  File "browseMode.pyc", line 564, in <lambda>
  File "browseMode.pyc", line 522, in _quickNavScript
  File "browseMode.pyc", line 469, in _iterSimilarParagraph
  File "browseMode.pyc", line 506, in paragraphFunc
TypeError: 'NoneType' object is not subscriptable

Expected behavior:

In 4.1, No freeze
In 4.2, no error and NVDA navigates and speaks properly the vertically aligned element.

NVDA logs, crash dumps and other attachments:

System configuration

NVDA installed/portable/running from source:

Installed

NVDA version:

alpha-31398,a69fbc62 (2024.2.0.31398)

Windows version:

Windows 23 H2

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

Firefox 124

Other information about your system:

Asus ROG strix with Intel I12900HK 5 ght, 32 gb DDR, NVIDIA gtx 3070TI with 8 gb GDDR6X

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.

n/a

If NVDA add-ons are disabled, is your problem still occurring?

No add-ons in use

Does the issue still occur after you run the COM Registration Fixing Tool in NVDA's tools menu?

yes

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions