Tor Browser will not run, when attempting to establish a connection the following error appeats:
The procedure entry point RSA_get0_d could not be located in the dynamic link library C:\Users\MyUser\Desktop\Tor Browser\Browser\TorBrowser\Tor\tor.exe
Trac: Username: ner0
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
One additional data point: I am unable to reproduce this problem on a Win10 64-bit laptop that has minimal software installed (no anti-malware software except the built-in Defender).
One additional data point: I am unable to reproduce this problem on a Win10 64-bit laptop that has minimal software installed (no anti-malware software except the built-in Defender).
Can confirm. In the system showing the issue I have Comodo AV, I hav esince cloned the system to a VM, removed tons of software including AV and it doesn't work all the same.
I have uninstalled virtually everything on the system and the issue persists. Should be noted that the issue does not happen when using the 32bit version of Tor Browser, only 64bit.
reinstall torbrowser?
Yes, reinstalled it multiple times. Also purged the whole folder, as well as Program Files and ProgramData leftovers. Tested with new Win user to exclude user profile issues. As mentioned by mcs, I also have been able to use the new win64 release on a another machine with no issue. On my computer (and VM) only the 32bit version is working, 64bit throws the error mentioned in the title.
I could try to be of further assistance if I knew a good way to debug or gather logging information that could be useful.
nickm, teor: do you have any idea about what could be causing this error?
Most frequently this kind of error happens when Tor is compiled with one version of openssl, but linked with another substantially different. I don't know so much about Windows linking behavior, however.
Is there some kind of tool that can be used to tell which specific libraries Windows is trying to link Tor against here? If so, that would probably help figure this out.
I don't know if procmon logs can be useful on their own.
I've attached logs and side by side comparison of v9.0.6 and v9.0.7, the issue arises very early on, not sue what is the trigger though.
However in Factors That Affect Searching they also say:
If the DLL is on the list of known DLLs for the version of Windows on which the application is running, the system uses its copy of the known DLL (and the known DLL's dependent DLLs, if any) instead of searching for the DLL. For a list of known DLLs on the current system, see the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.
{{{
12:01:42.7784859 PM tor.exe 25560 CreateFile C:\Windows\System32\libcrypto-1_1-x64.dll SUCCESS Desired Access: Read Attributes, Disposition: Open, Options: Open Reparse Point, Attributes: n/a, ShareMode: Read, Write, Delete, AllocationSize: n/a, OpenResult: Opened
}}}
libcrypto-1_1-x64.dll in system32 dir (why?)
The OpenSSL Toolkit... that's where it came from.
that might have been a contributing factor, but weirder is how it was "fixed":
Ran Tor Browser once as administrator;
Done.
I don't have a clue as to what/why.
I can now run it without elevated privileges just fine, no more issues.
However in Factors That Affect Searching they also say:
If the DLL is on the list of known DLLs for the version of Windows on which the application is running, the system uses its copy of the known DLL (and the known DLL's dependent DLLs, if any) instead of searching for the DLL. For a list of known DLLs on the current system, see the following registry key: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs.
Maybe libssl is part of the known DLLs?
None of the DLLs on that registry key matches the ones in Tor's folder, can't speak to their dependency though, it's possible it could be called by any one of them.
Just want to confirm that the presence of a different version of libcrypto-1_1-x64.dll in System32 (v1.1.0.10) was the actual issue (thanks for noticing it, cypherpunks). Not sure why running as admin would "bypass" that permanently and also very curious why, as boklm mentioned, Windows would ignore the DLL present in Tor Browser's folder which should have had priority. I have removed all OpenSSL DLLs from System32, I am not sure if it was me who put them there on my own, but its best to remove them to avoid future issues.
Another weird thing is that my system has not changed since the last release up to current, so maybe partially was due to:
[comment:3 boklm]:
Do it's a bit conflicting what I'm interpreting from Microsoft docs. Which excerpts specifically say that Windows (10) excludes the working dir by default from known DLL search?
Indeed, DLL loading has become the important topic.
This issue also popped up for me today when Tor tried upgrading to 9.0.7, Win10 x64. Tried downloading the installer and that also gives the error. Reinstalled 9.0.6 and the error went away.
This issue also popped up for me today when Tor tried upgrading to 9.0.7, Win10 x64. Tried downloading the installer and that also gives the error. Reinstalled 9.0.6 and the error went away.
Have you tried removing possible overriding DLLs or just running Tor Browser once as administrator? For me both approaches solved the issue. In my case I shouldn't have had those DLLs in system32 to begin with, but I also think Tor Browser bears responsibility for not loading the correct (workingdir) DLL.
This issue also popped up for me today when Tor tried upgrading to 9.0.7, Win10 x64. Tried downloading the installer and that also gives the error. Reinstalled 9.0.6 and the error went away.
Have you tried removing possible overriding DLLs or just running Tor Browser once as administrator? For me both approaches solved the issue. In my case I shouldn't have had those DLLs in system32 to begin with, but I also think Tor Browser bears responsibility for not loading the correct (workingdir) DLL.
nickm, teor: do you have any idea about what could be causing this error?
Most frequently this kind of error happens when Tor is compiled with one version of openssl, but linked with another substantially different. I don't know so much about Windows linking behavior, however.
We have seen similar issues in our Windows CI.
We tried copying the correct DLLs into the same directory as the exe, but that didn't help. We ended up disabling the failing unit test.
But if you work out how to modify the DLL search path, or find the correct directories to copy the DLLs into, please let us know.
I also don't know why running Tor Browser once as an administrator fixes the issue.
I also don't know why running Tor Browser once as an administrator fixes the issue.
At first glance it seems to be a Microsoft "feature", but lets not lose focus that Tor is the actual issue. To the extent that Windows 10 is concerned, my testing had the following results in terms of DLL search order.
When running as current user, '\Windows\System32' is searched first, then \Windows, and so on.
When current user invokes "run as administrator", current folder is searched first.
I can't really wrap my head around Microsoft's intention here, if the idea was to protect the user from potential system hijacking I would assume the OS to take the opposite approach since non-system files and folders would be easier to compromise, thus it would make much more sense for an elevated process to first search the system folder instead of an easily manipulable user folder. That aside, why does using "run as administrator" once fixes it for subsequent runs as a standard user? No clue.
Anyway, one thing is sure, Firefox process itself handles DLL search order perfectly regardless of the elevation while Tor process does not. The earliest example is firefox.exe searching for the DLL version.dll inside Tor Browser's folder first before searching in \Windows\System32, meanwhile tor.exe searches for all DLLs first in \Windows\System32, then '\Windows', etc. I think Tor should implement the approach mentioned before: [https://searchfox.org/mozilla-central/source/toolkit/mozapps/update/updater/loaddlls.cpp#8-29]
But everything works fine in our Windows CI. So even if it is something we can fix (1 or 2), it's not a universal issue. So it's not going to be easy to test. (We might be able to test is using the OpenSSL version mismatch in #33643 (moved), but that's also unreliable.)
If we find out it's something Tor Browser can fix, we'll hand it back to you.
Sounds like a tor ticket now, no?
FWIW, tor runs in Tor Browser with Virtualized UAC Disabled when it's on Windows 10.
According to #22450 (moved), they won't fix Windows issues anytime soon.