Skip to content

Intermittent garbage handler errors in Firefox #13578

@lukaszgo1

Description

@lukaszgo1

Steps to reproduce:

Use Firefox for several minutes.

Actual behavior:

The following garbage handler errors are in the log:

WARNING - garbageHandler.notifyObjectDeletion (01:03:20.562) - MainThread (4424):
Garbage collector has found one or more unreachable objects. See further warnings for specific objects.
Stack trace:
  File "nvda.pyw", line 389, in <module>
  File "core.pyc", line 776, in main
  File "wx\core.pyc", line 2237, in MainLoop
  File "gui\__init__.pyc", line 762, in Notify
  File "core.pyc", line 737, in run
  File "IAccessibleHandler\__init__.pyc", line 1057, in pumpAll
  File "IAccessibleHandler\__init__.pyc", line 724, in processFocusWinEvent
  File "IAccessibleHandler\__init__.pyc", line 576, in winEventToNVDAEvent
  File "NVDAObjects\IAccessible\__init__.pyc", line 70, in getNVDAObjectFromEvent
  File "NVDAObjects\__init__.pyc", line 88, in __call__
  File "NVDAObjects\IAccessible\__init__.pyc", line 487, in findOverlayClasses
  File "importlib\__init__.pyc", line 127, in import_module
  File "<frozen importlib._bootstrap>", line 1006, in _gcd_import
  File "<frozen importlib._bootstrap>", line 983, in _find_and_load
  File "<frozen importlib._bootstrap>", line 967, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 668, in _load_unlocked
  File "<frozen importlib._bootstrap>", line 638, in _load_backward_compatible
  File "NVDAObjects\IAccessible\sysTreeView32.pyc", line 187, in <module>
  File "baseObject.pyc", line 80, in __init__
  File "garbageHandler.pyc", line 28, in __del__
  File "garbageHandler.pyc", line 69, in notifyObjectDeletion
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.562) - MainThread (4424):
Deleting unreachable object <virtualBuffers.gecko_ia2.Gecko_ia2 object at 0x04CC29D0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06F6A350>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x538b304 at 6c73300>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x538b5d4 at 6c735d0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x067DF9B0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x538b4fc at 6c73cb0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x538ba0c at 6c73f30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_RowWithFakeNavigationMozillaIAccessible object at 0x06F6A530>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x743330c at 6c73d00>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.565) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x743261c at 6c73850>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x03E058F0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d76b4 at 6c738a0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleTable2) ptr=0x53d7624 at 6c73c60>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d781c at 6c73080>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DocumentMozillaIAccessible object at 0x03E05C10>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7430afc at 6c73a80>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x74302d4 at 6c73da0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DocumentMozillaIAccessible object at 0x03E05EB0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <virtualBuffers.gecko_ia2.Gecko_ia2_TextInfo object at 0x067DF9D0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x538bc94 at 6c733f0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.567) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x538ad1c at 6c73bc0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x74326f4 at 6c73b20>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x7432c4c at 6c73d50>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x742fee4 at 6c73530>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.WindowRoot object at 0x06F6A970>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x742fee4 at 6c73a30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7430afc at 6c73f80>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x74302d4 at 6c73e90>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.570) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x067C1810>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.572) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible) ptr=0x53dc274 at 6e70260>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.585) - MainThread (4424):
Deleting unreachable object <NVDAObjects.window.Desktop object at 0x067D4A70>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.585) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x7430a24 at 6c73b70>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.585) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x742fdc4 at 6c73e40>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.587) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DialogMozillaIAccessible object at 0x067C1910>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.587) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x743028c at 58e0940>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.587) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x742fe9c at 586ef80>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06C97370>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x743055c at 58e0b20>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x530c10c at 58e08f0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06C97530>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x54618b4 at 58e08a0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d842c at 58e09e0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.590) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d8aa4 at 58e0850>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.592) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.WindowRoot object at 0x06ED0FB0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.592) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.WindowRoot object at 0x06C81270>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.592) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible) ptr=0x530cb2c at 6c73030>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.597) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible) ptr=0x74329c4 at 6e702b0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <NVDAObjects.window.Desktop object at 0x05887210>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <virtualBuffers.gecko_ia2.Gecko_ia2 object at 0x03DFD890>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x03DFDED0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7489574 at 58e0ad0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x7489cc4 at 6c027b0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DocumentMozillaIAccessible object at 0x03DFDE90>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.600) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d6e8c at 58e0a30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d71a4 at 6c73170>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06E4E5F0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7488c74 at 6c8bee0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06E87210>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7488c2c at 6c8bc60>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x74892ec at 6c8bad0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06E4E910>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x524a894 at 6c8ba30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.602) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x524a84c at 6c8be40>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DocumentMozillaIAccessible object at 0x03DFDA30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d6e8c at 6c8b300>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d71a4 at 6c8b260>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DocumentMozillaIAccessible object at 0x03DFD4D0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x7489964 at 6c73df0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x53d7aa4 at 6c73ad0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x7488d94 at 6c8be90>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x7488e24 at 6c8b0d0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.605) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x748a18c at 6c8b7b0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x53d7aa4 at 6c8b710>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <virtualBuffers.gecko_ia2.Gecko_ia2_TextInfo object at 0x06F6AAB0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x53d7aa4 at 6c738f0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d6e8c at 6c733a0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d71a4 at 6c73490>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x06E4E990>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x52dd884 at 6c8b990>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.607) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x530c424 at 6c8b210>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.610) - MainThread (4424):
Deleting unreachable object <NVDAObjects.Dynamic_DialogMozillaIAccessible object at 0x067C18B0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.610) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x748a7bc at 6c8bf80>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.610) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x7489e74 at 6c8bcb0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x03DFDA50>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x743055c at 6c8bf30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x530c10c at 6c8b080>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.mozilla.Mozilla object at 0x03DFDA70>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible2) ptr=0x54618b4 at 6c8bb70>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.612) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleAction) ptr=0x53d842c at 6c8bdf0>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.615) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessibleText) ptr=0x53d8aa4 at 6c8ba80>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.615) - MainThread (4424):
Deleting unreachable object <NVDAObjects.IAccessible.WindowRoot object at 0x03DFDF30>
WARNING - garbageHandler.notifyObjectDeletion (01:03:20.615) - MainThread (4424):
Deleting unreachable object <POINTER(IAccessible) ptr=0x7489acc at 6c8b8a0>
ERROR - garbageHandler._collectionCallback (01:03:20.615) - MainThread (4424):
Found at least 92 unreachable objects in run

Expected behavior:

No garbage handler errors.

System configuration

NVDA installed/portable/running from source:

Portable and from source

NVDA version:

Latest Alpha

Windows version:

N/A

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

Nightly 100

Other information about your system:

Other questions

Does the issue still occur after restarting your computer?

Yes, it does

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

No errors with 2022.1

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

Yes

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

N/A

Technical:

I haven't done a bisect, but by looking at the commit history this was probaly introduced by PR #13345. At a guess the reference cycle is caused by the fact that the given tree interceptor holds a reference to its own text info in _lastTableSelection.selection.
It probably should be sufficient to make _TableSelection.selection a weak reference.
cc @seanbudd @mltony

Metadata

Metadata

Assignees

No one assigned

    Labels

    app/firefoxgarbage-collectionpython garbage collection warningsp2https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.

    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