Remove some dead code that threw file load exception (#87290)
authorElinor Fung <elfung@microsoft.com>
Fri, 9 Jun 2023 00:10:47 +0000 (17:10 -0700)
committerGitHub <noreply@github.com>
Fri, 9 Jun 2023 00:10:47 +0000 (17:10 -0700)
* Remove some dead code that threw file load exception

* Remove FUSION_E_CACHEFILE_FAILED

15 files changed:
src/coreclr/dlls/mscorrc/mscorrc.rc
src/coreclr/inc/corerror.xml
src/coreclr/pal/prebuilt/corerror/mscorurt.rc
src/coreclr/pal/prebuilt/inc/corerror.h
src/coreclr/utilcode/ex.cpp
src/coreclr/vm/appdomain.cpp
src/coreclr/vm/appdomain.hpp
src/coreclr/vm/coreassemblyspec.cpp
src/coreclr/vm/peimage.cpp
src/coreclr/vm/peimage.h
src/coreclr/vm/rexcep.h
src/libraries/Common/src/System/HResults.cs
src/libraries/System.Private.CoreLib/src/System/Runtime/InteropServices/Marshal.cs
src/libraries/System.Runtime/tests/System/IO/Exceptions.HResults.cs
src/libraries/System.Runtime/tests/System/IO/FileLoadException.InteropTests.cs

index 4516dae..4e69980 100644 (file)
@@ -115,7 +115,6 @@ BEGIN
     FUSION_E_REF_DEF_MISMATCH               "The located assembly's manifest definition with name '%1' does not match the assembly reference."
     FUSION_E_PRIVATE_ASM_DISALLOWED         "Assembly '%1' is required to be strongly named."
     FUSION_E_INVALID_NAME                   "The given assembly name, '%1', was invalid."
-    FUSION_E_CACHEFILE_FAILED               "Failed to add file to AppDomain cache."
     FUSION_E_APP_DOMAIN_LOCKED              "The requested assembly version conflicts with what is already bound in the app domain or specified in the manifest."
     IDS_EE_HASH_VAL_FAILED                  "Hash validation failed for file or assembly '%1'."
     CORSEC_E_INVALID_PUBLICKEY              "The public key for assembly '%1' was invalid."
index 81c7bab..7c0c385 100644 (file)
        <Comment> The given assembly name was invalid. </Comment>
 </HRESULT>
 
-<HRESULT NumericValue="0x80131052">
-       <SymbolicName>FUSION_E_CACHEFILE_FAILED</SymbolicName>
-       <Message>"Failed to add file to AppDomain cache."</Message>
-       <Comment> Failed to add file to AppDomain cache </Comment>
-</HRESULT>
-
 <HRESULT NumericValue="0x80131053">
        <SymbolicName>FUSION_E_APP_DOMAIN_LOCKED</SymbolicName>
        <Message>"The requested assembly version conflicts with what is already bound in the app domain or specified in the manifest."</Message>
index a30a45e..c0df09d 100644 (file)
@@ -16,7 +16,6 @@ BEGIN
        MSG_FOR_URT_HR(FUSION_E_REF_DEF_MISMATCH) "The located assembly's manifest definition does not match the assembly reference."
        MSG_FOR_URT_HR(FUSION_E_PRIVATE_ASM_DISALLOWED) "A strongly-named assembly is required."
        MSG_FOR_URT_HR(FUSION_E_INVALID_NAME) "The given assembly name was invalid."
-       MSG_FOR_URT_HR(FUSION_E_CACHEFILE_FAILED) "Failed to add file to AppDomain cache."
        MSG_FOR_URT_HR(FUSION_E_APP_DOMAIN_LOCKED) "The requested assembly version conflicts with what is already bound in the app domain or specified in the manifest."
        MSG_FOR_URT_HR(COR_E_LOADING_REFERENCE_ASSEMBLY) "Reference assemblies cannot be loaded for execution."
        MSG_FOR_URT_HR(COR_E_AMBIGUOUSIMPLEMENTATION) "Ambiguous implementation found."
index 8b64c94..e073dea 100644 (file)
@@ -43,7 +43,6 @@
 #define FUSION_E_REF_DEF_MISMATCH EMAKEHR(0x1040)
 #define FUSION_E_PRIVATE_ASM_DISALLOWED EMAKEHR(0x1044)
 #define FUSION_E_INVALID_NAME EMAKEHR(0x1047)
-#define FUSION_E_CACHEFILE_FAILED EMAKEHR(0x1052)
 #define FUSION_E_APP_DOMAIN_LOCKED EMAKEHR(0x1053)
 #define COR_E_LOADING_REFERENCE_ASSEMBLY EMAKEHR(0x1058)
 #define COR_E_AMBIGUOUSIMPLEMENTATION EMAKEHR(0x106a)
index f898fb1..8f6bdd0 100644 (file)
@@ -573,7 +573,6 @@ LPCSTR Exception::GetHRSymbolicName(HRESULT hr)
     CASE_HRESULT(COR_E_APPDOMAINUNLOADED)
     CASE_HRESULT(COR_E_CANNOTUNLOADAPPDOMAIN)
     CASE_HRESULT(MSEE_E_ASSEMBLYLOADINPROGRESS)
-    CASE_HRESULT(FUSION_E_CACHEFILE_FAILED)
     CASE_HRESULT(FUSION_E_REF_DEF_MISMATCH)
     CASE_HRESULT(FUSION_E_PRIVATE_ASM_DISALLOWED)
     CASE_HRESULT(FUSION_E_INVALID_NAME)
index d721089..c116276 100644 (file)
@@ -3262,7 +3262,7 @@ PVOID AppDomain::GetFriendlyNameNoSet(bool* isUtf8)
 
 #ifndef DACCESS_COMPILE
 
-BOOL AppDomain::AddFileToCache(AssemblySpec* pSpec, PEAssembly * pPEAssembly, BOOL fAllowFailure)
+BOOL AppDomain::AddFileToCache(AssemblySpec* pSpec, PEAssembly * pPEAssembly)
 {
     CONTRACTL
     {
@@ -3274,25 +3274,10 @@ BOOL AppDomain::AddFileToCache(AssemblySpec* pSpec, PEAssembly * pPEAssembly, BO
     }
     CONTRACTL_END;
 
-    {
-        GCX_PREEMP();
-        DomainCacheCrstHolderForGCCoop holder(this);
-
-        // !!! suppress exceptions
-        if(!m_AssemblyCache.StorePEAssembly(pSpec, pPEAssembly) && !fAllowFailure)
-        {
-            // TODO: Disabling the below assertion as currently we experience
-            // inconsistency on resolving the Microsoft.Office.Interop.MSProject.dll
-            // This causes below assertion to fire and crashes the VS. This issue
-            // is being tracked with Dev10 Bug 658555. Brought back it when this bug
-            // is fixed.
-            // _ASSERTE(FALSE);
-
-            EEFileLoadException::Throw(pSpec, FUSION_E_CACHEFILE_FAILED, NULL);
-        }
-    }
+    GCX_PREEMP();
+    DomainCacheCrstHolderForGCCoop holder(this);
 
-    return TRUE;
+    return m_AssemblyCache.StorePEAssembly(pSpec, pPEAssembly);
 }
 
 BOOL AppDomain::AddAssemblyToCache(AssemblySpec* pSpec, DomainAssembly *pAssembly)
@@ -3505,10 +3490,10 @@ BOOL AppDomain::PostBindResolveAssembly(AssemblySpec  *pPrePolicySpec,
             // The binder does a re-fetch of the
             // original binding spec and therefore will not cause inconsistency here.
             // For the purposes of the resolve event, failure to add to the cache still is a success.
-            AddFileToCache(pPrePolicySpec, result, TRUE /* fAllowFailure */);
+            AddFileToCache(pPrePolicySpec, result);
             if (*ppFailedSpec != pPrePolicySpec)
             {
-                AddFileToCache(pPostPolicySpec, result, TRUE /* fAllowFailure */ );
+                AddFileToCache(pPostPolicySpec, result);
             }
         }
     }
@@ -3569,7 +3554,7 @@ PEAssembly * AppDomain::BindAssemblySpec(
                     // Failure to add simply means someone else beat us to it. In that case
                     // the FindCachedFile call below (after catch block) will update result
                     // to the cached value.
-                    AddFileToCache(pSpec, result, TRUE /*fAllowFailure*/);
+                    AddFileToCache(pSpec, result);
                 }
                 else
                 {
index ab928ca..5b5975c 100644 (file)
@@ -1869,7 +1869,7 @@ public:
     BOOL IsCached(AssemblySpec *pSpec);
 #endif // DACCESS_COMPILE
 
-    BOOL AddFileToCache(AssemblySpec* pSpec, PEAssembly *pPEAssembly, BOOL fAllowFailure = FALSE);
+    BOOL AddFileToCache(AssemblySpec* pSpec, PEAssembly *pPEAssembly);
     BOOL RemoveFileFromCache(PEAssembly *pPEAssembly);
 
     BOOL AddAssemblyToCache(AssemblySpec* pSpec, DomainAssembly *pAssembly);
index 5688d9a..2fc79fa 100644 (file)
 #include "../binder/inc/assemblybindercommon.hpp"
 #include "../binder/inc/applicationcontext.hpp"
 
-static VOID ThrowLoadError(AssemblySpec * pSpec, HRESULT hr)
-{
-    CONTRACTL
-    {
-        THROWS;
-        MODE_ANY;
-        GC_TRIGGERS;
-    }
-    CONTRACTL_END;
-
-    StackSString name;
-    pSpec->GetDisplayName(0, name);
-    EEFileLoadException::Throw(name, hr);
-}
-
 HRESULT  AssemblySpec::Bind(AppDomain *pAppDomain, BINDER_SPACE::Assembly** ppAssembly)
 {
     CONTRACTL
index 1610ef4..0f235ad 100644 (file)
@@ -387,20 +387,6 @@ void PEImage::GetMVID(GUID *pMvid)
 #endif // _DEBUG
 }
 
-void DECLSPEC_NORETURN PEImage::ThrowFormat(HRESULT hrError)
-{
-    CONTRACTL
-    {
-        GC_TRIGGERS;
-        THROWS;
-        MODE_ANY;
-    }
-    CONTRACTL_END;
-
-    EEFileLoadException::Throw(m_path, hrError);
-}
-
-
 //may outlive PEImage
 PEImage::IJWFixupData::IJWFixupData(void *pBase)
     : m_lock(CrstIJWFixupData),
index 7fb9c4d..d30e561 100644 (file)
@@ -232,8 +232,6 @@ private:
     static BOOL CompareImage(UPTR image1, UPTR image2);
     static BOOL CompareIJWDataBase(UPTR base, UPTR mapping);
 
-    void DECLSPEC_NORETURN ThrowFormat(HRESULT hr);
-
 public:
     class IJWFixupData
     {
index f3c08f4..bf424b7 100644 (file)
@@ -143,7 +143,6 @@ DEFINE_EXCEPTION(g_SystemNS,           FieldAccessException,           false,  C
 
 DEFINE_EXCEPTION(g_IONS,               FileLoadException,              true,
                  COR_E_FILELOAD,
-                 FUSION_E_CACHEFILE_FAILED,
                  FUSION_E_INVALID_NAME,
                  FUSION_E_PRIVATE_ASM_DISALLOWED, 
                  FUSION_E_REF_DEF_MISMATCH,
index 37af241..2ce0acc 100644 (file)
@@ -125,7 +125,6 @@ namespace System
         internal const int STG_E_PATHNOTFOUND = unchecked((int)0x80030003);
         internal const int CTL_E_PATHNOTFOUND = unchecked((int)0x800A004C);
         internal const int CTL_E_FILENOTFOUND = unchecked((int)0x800A0035);
-        internal const int FUSION_E_CACHEFILE_FAILED = unchecked((int)0x80131052);
         internal const int FUSION_E_INVALID_NAME = unchecked((int)0x80131047);
         internal const int FUSION_E_PRIVATE_ASM_DISALLOWED = unchecked((int)0x80131044);
         internal const int FUSION_E_REF_DEF_MISMATCH = unchecked((int)0x80131040);
index 692cdda..8e4f8fb 100644 (file)
@@ -807,7 +807,6 @@ namespace System.Runtime.InteropServices
                             HResult = errorCode
                         };
                     }
-                case HResults.FUSION_E_CACHEFILE_FAILED:
                 case HResults.FUSION_E_INVALID_NAME:
                 case HResults.FUSION_E_PRIVATE_ASM_DISALLOWED:
                 case HResults.FUSION_E_REF_DEF_MISMATCH:
index 14e6ff8..777ffae 100644 (file)
@@ -17,7 +17,6 @@ namespace System.IO.Tests
         public const int COR_E_EXCEPTION = unchecked((int)0x80131500);
 
         public const int COR_E_FILELOAD = unchecked((int)0x80131621);
-        public const int FUSION_E_CACHEFILE_FAILED = unchecked((int)0x80131052);
         public const int FUSION_E_INVALID_NAME = unchecked((int)0x80131047);
         public const int FUSION_E_PRIVATE_ASM_DISALLOWED = unchecked((int)0x80131044);
         public const int FUSION_E_REF_DEF_MISMATCH = unchecked((int)0x80131040);
index 8018351..9d44977 100644 (file)
@@ -12,7 +12,6 @@ namespace System.IO.Tests
     {
         [Theory]
         [InlineData(HResults.COR_E_FILELOAD)]
-        [InlineData(HResults.FUSION_E_CACHEFILE_FAILED)]
         [InlineData(HResults.FUSION_E_INVALID_NAME)]
         [InlineData(HResults.FUSION_E_PRIVATE_ASM_DISALLOWED)]
         [InlineData(HResults.FUSION_E_REF_DEF_MISMATCH)]