-
-
Notifications
You must be signed in to change notification settings - Fork 670
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NVDA does not work with Adobe reader DC 64 bit #12920
Comments
Can confirm this with |
Hi, |
Acrobat Reader does not crash when NVDA is used in English, but crashes when NVDA language is set to Turkish. I don't know if this issue occurs in other languages. |
Technical info: One possible work around to this might be for NVDAHelper itself to hook CoGetPSCLSID, and in our implementation, return the CLSIDs we want registered. which then removes the need for us to specifically call CoGetPSCLSID and or CoRegisterPSCLSID ourselves. But this assumes that the COM framework will in deed call CoGetPSCLSID itself in order to look up proxystub CLSIDs. Which, it should, unless there is a lower-level function the framework uses internally. |
Hi, |
I investigated My idea of hooking CoGetPSClsid but it looks as though Windows does not internally call it itself to lookup the proxy stub CLSID. |
The current recommendation to work around bugs in Adobe Reader is to specifically download and install Adobe Reader 32 bit from adobe.com (which today still exists). And also in Adobe Reader's preferences: disable Protected mode / app container, in the Security (enhanced) category. |
Even when working around the app container bug, Adobe Reader 64 bit still crashes when NVDA starts to interact with pdf content. |
Maybe it would be valuable to write something about it in the message announcing the release. |
These bugs are certainly Adobe Reader's and are not caused by any
changes in NVDA. I.e. NVDA 2021.2 and older would experience the same issue.
We should certainly publish the work around recommendations somewhere
easy to find at least though.
|
Hi Michael, |
I understand. I am doing all I can to get the bugs investigated and
addressed in Adobe Reader. There is nothing we can currently do in NVDA
at the moment.
|
Given that JAWS has (or at least had last time I checked) |
I've confirmed JAWS is not affected by these bugs in Acrobat. |
What happens if we do not register the IAccessible2 proxy in Adobe Reader? |
O well, just tested it an it still crashes, though later in the process. |
It seems timing matters with this bug. When I quit NVDA and use Narrator to open a PDF and start NVDA after that, it seems to work as expected. I wonder if other people in this thread can reproduce that? |
I'm having the same issue with Adobe Acrobat DC. Getting exception code 0xc0000005. I changed the settings to read visible page, but that didn't help. (I work with lots of long pdf's so I typically make acrobat load the whole thing before reading). |
Hi,
These messages also disappear after disabling appContainer. |
hi, |
Fixes #11568 Partial fix for #12920 Summary of the issue: Recent versions of Adobe Reader introduced a Protected Mode, where by the Adobe Acrobat process has less privileges and is sandboxed. This ensures that insecure PDFs do not have a chance to affect the rest of the Operating System. By default Adobe Reader is configured to enter its Protected mode on start-up, and to set the 'isAppContainer' attribute on its process token. There seems to be a bug however, either in Adobe Reader, the Windows OS, or NVDA (NV access and Adobe cannot be sure) that causes the Adobe Reader process to become unstable when NVDA tires to register IAccessible2. Specifically, the call to CoGetPSClsid seems to start making things unstable. The further call to CoRegisterPSClsid fails, and then eventually the process completely crashes randomly in places such as TSF initialization. The upshot is that If Adobe Reader is started when NVDA is running, many errors are written to NVDA's log, and Adobe Reader closes straight away. Description of how this pull request fixes the issue: NVDAHelper's IAccessible2 registration code now checks if the process token has the 'IsAppContainer' attribute, and of so refuses to install IAccessible2 support. Note that Adobe Reader itself does not require IAccessible2 to function. Also, the 'IsAppContainer' is only set on very heavily sandboxed sitations, and is not the same as the app container that is used for Windows Desktop Bridge apps. Thus, refusing to install IAccessible2 into processes with the 'IsAppContainer' attribute has no other known side affects.
hi, |
Adobe has now communicated that they are addressing the issue on their side. But here is further technical information which was found during investigation from me.
|
@enessaribas I've now removed needsInfo and replaced it with needsExternalFix. Adobe has all the information, and has communicated that they will fix it on their end. I will update the issue when I know more. |
Could Adobe possibly stop automatically upgrading the version from 32 bit to 64 bit on systems with NVDA? There is no way to turn off this behavior, and I have had to manually uninstall and reinstall reader twice so far. |
Not likely, but you can stop it from updating itself, apparently. From a very
brief Google search on "keep adobe reader from automatically updating":
1. Simultaneously press Windows + R keys to open run command box.
2. In run command box, type: services. ...
3. Double click to open "Adobe Acrobat Update Service" properties
(AdobeARMservice).
4. Set the Startup type to Disabled.
|
|
I am no longer experiencing this issue with the latest Adobe reader and NVDA 2022.beta3. Is anyone still experiencing this issue with the latest Adobe reader? Would you be able to test #13852? |
…lBuffer for PDF content (#13852) Fixes #12920 # Summary of the issue: Adobe Acrobat / Reader 64 bit crashes when NVDA renders a virtualBuffer for PDF content. There are two reasons for this: 1. Adobe's IAccID custom interface has been changed so that specifically on 64 bit builds, the ID argument is now 64 bit wide instead of 32 bit. This meant that NVDA was using the wrong data type and wrong call signature for IAccID::get_accID, and therefore Acrobat / Reader was trying to write a 64 bit value in to the space that could only hold 32 bits, causing a buffer overrun. 2. Adobe Acrobat / Reader's accID values, including the MSAA child IDs used for IAccessible::get_accChild and AccessibleObjectFromEvent were 64 bit wide, though MSAA only supports 32 bit values. This would cause invalid and truncated values to be used for child IDs, in many cases causing a crash. Adobe has addressed point 2 in Adobe Acrobat / Reader beta versions and will be in a stable build in the near future. But NVDA needs to address point 1 in its own code. # Description of user facing changes Using a version of Adobe Acrobat / Reader with the required fixes on adobe's side, along with this PR in NVDA, the crash is avoided. # Description of development approach miscDeps has been updated to contain the newest version of acrobatAccess.idl from the Adobe Acrobat SDK. The adobeAcrobat vbufBackend getAccID method has been changed to fetch the out param of IAccID::get_accID with a LONG_PRT which will be 64 bit wide on 64 bit Acrobat / Reader, and 32 bit wide on 32 bit Acrobat / Reader. The value is then static casted to long when returned. As Acrobat always uses 32 bit accID vlaues, no information will be lost in the conversion.
Steps to reproduce:
Actual behavior:
NVDA plays multiple error tones, and Adobe reader exits with no visible error. The following appears in log
ERROR - RPC process 10084 (Acrobat.exe) (14:56:39.824) - Dummy-1229 (4232):
Thread 8124, build\x86_64\remote\COMProxyRegistration.cpp, registerCOMProxy, 182:
Unable to register interface IAccessibleHyperlink with proxy stub IAccessible2Proxy.dll, code -2147023156
Expected behavior:
Adobe reader does not exit and NVDA reads document.
System configuration
NVDA installed/portable/running from source:
installed
NVDA version:
alpha-23897,7bd9e8b1
Windows version:
windows 10 21h1
Name and version of other software in use when reproducing the issue:
Adobe reader DC
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.
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?
yes
The text was updated successfully, but these errors were encountered: