Skip to content

System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

Description

@ThomasSkyldahl

Description

Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
using specific Compare options fails with System.AccessValidationException

We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

If ICU settings are disabled everything behaves as normal

Reproduction Steps

Setup a new .NET 6 console project with the following files

Repro.csproj

<ProjectSdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
<RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
</ItemGroup>
</Project>

Program.cs

usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

Expected behavior

No System.AccessViolationException are thrown and the program exists with status code 0

Actual behavior

System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

Regression?

With the previous version of the SDK everything worked as espected

Known Workarounds

Remove ICU settings
<RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

Configuration

.NET SDK v6.0.402
.NET Runtime v6.0.10
Architecture: x64
Windows 10 and 11 both fully updated
Specific on my machine: Version 21H2 (OS Build 190444.2130)

Other information

No response

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

    , 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
     blocks
    (function() {
    function addCopyButtons() {
    document.querySelectorAll('pre code').forEach(function(codeBlock) {
    if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
    codeBlock.parentElement.setAttribute('data-copy-added', 'true');
    var btn = document.createElement('button');
    btn.textContent = 'Copy';
    btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
    btn.onmouseover = function() { this.style.opacity = '1'; };
    btn.onmouseout = function() { this.style.opacity = '0.7'; };
    btn.onclick = function() {
    navigator.clipboard.writeText(codeBlock.textContent).then(function() {
    btn.textContent = 'Copied!';
    setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
    });
    };
    codeBlock.parentElement.style.position = 'relative';
    codeBlock.parentElement.appendChild(btn);
    });
    }
    addCopyButtons();
    // Re-run on dynamic content
    var observer = new MutationObserver(addCopyButtons);
    observer.observe(document.body, { childList: true, subtree: true });
    })();
    }
    } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
    })();
    (function(){
    try {
    var __m = "github.com";
    var __re = new RegExp('^' + "github\\.com" + '
    System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
    Skip to content

    System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

    Description

    @ThomasSkyldahl

    Description

    Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
    using specific Compare options fails with System.AccessValidationException

    We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

    If ICU settings are disabled everything behaves as normal

    Reproduction Steps

    Setup a new .NET 6 console project with the following files

    Repro.csproj

    <ProjectSdk="Microsoft.NET.Sdk">
    <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net6.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    </PropertyGroup>
    <ItemGroup>
    <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
    <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
    </ItemGroup>
    </Project>

    Program.cs

    usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

    Expected behavior

    No System.AccessViolationException are thrown and the program exists with status code 0

    Actual behavior

    System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

    Regression?

    With the previous version of the SDK everything worked as espected

    Known Workarounds

    Remove ICU settings
    <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

    Configuration

    .NET SDK v6.0.402
    .NET Runtime v6.0.10
    Architecture: x64
    Windows 10 and 11 both fully updated
    Specific on my machine: Version 21H2 (OS Build 190444.2130)

    Other information

    No response

    Metadata

    Metadata

    Assignees

    Type

    No type

    Projects

    No projects

      Milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      , 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
      Skip to content

      System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

      Description

      @ThomasSkyldahl

      Description

      Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
      using specific Compare options fails with System.AccessValidationException

      We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

      If ICU settings are disabled everything behaves as normal

      Reproduction Steps

      Setup a new .NET 6 console project with the following files

      Repro.csproj

      <ProjectSdk="Microsoft.NET.Sdk">
      <PropertyGroup>
      <OutputType>Exe</OutputType>
      <TargetFramework>net6.0</TargetFramework>
      <ImplicitUsings>enable</ImplicitUsings>
      <Nullable>enable</Nullable>
      </PropertyGroup>
      <ItemGroup>
      <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
      <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
      </ItemGroup>
      </Project>

      Program.cs

      usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

      Expected behavior

      No System.AccessViolationException are thrown and the program exists with status code 0

      Actual behavior

      System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

      Regression?

      With the previous version of the SDK everything worked as espected

      Known Workarounds

      Remove ICU settings
      <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

      Configuration

      .NET SDK v6.0.402
      .NET Runtime v6.0.10
      Architecture: x64
      Windows 10 and 11 both fully updated
      Specific on my machine: Version 21H2 (OS Build 190444.2130)

      Other information

      No response

      Metadata

      Metadata

      Assignees

      Type

      No type

      Projects

      No projects

        Milestone

        Relationships

        None yet

        Development

        No branches or pull requests

        Issue actions

        , 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
        Skip to content

        System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

        Description

        @ThomasSkyldahl

        Description

        Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
        using specific Compare options fails with System.AccessValidationException

        We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

        If ICU settings are disabled everything behaves as normal

        Reproduction Steps

        Setup a new .NET 6 console project with the following files

        Repro.csproj

        <ProjectSdk="Microsoft.NET.Sdk">
        <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>net6.0</TargetFramework>
        <ImplicitUsings>enable</ImplicitUsings>
        <Nullable>enable</Nullable>
        </PropertyGroup>
        <ItemGroup>
        <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
        <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
        </ItemGroup>
        </Project>

        Program.cs

        usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

        Expected behavior

        No System.AccessViolationException are thrown and the program exists with status code 0

        Actual behavior

        System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

        Regression?

        With the previous version of the SDK everything worked as espected

        Known Workarounds

        Remove ICU settings
        <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

        Configuration

        .NET SDK v6.0.402
        .NET Runtime v6.0.10
        Architecture: x64
        Windows 10 and 11 both fully updated
        Specific on my machine: Version 21H2 (OS Build 190444.2130)

        Other information

        No response

        Metadata

        Metadata

        Assignees

        Type

        No type

        Projects

        No projects

          Milestone

          Relationships

          None yet

          Development

          No branches or pull requests

          Issue actions

          , 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
          Skip to content

          System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

          Description

          @ThomasSkyldahl

          Description

          Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
          using specific Compare options fails with System.AccessValidationException

          We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

          If ICU settings are disabled everything behaves as normal

          Reproduction Steps

          Setup a new .NET 6 console project with the following files

          Repro.csproj

          <ProjectSdk="Microsoft.NET.Sdk">
          <PropertyGroup>
          <OutputType>Exe</OutputType>
          <TargetFramework>net6.0</TargetFramework>
          <ImplicitUsings>enable</ImplicitUsings>
          <Nullable>enable</Nullable>
          </PropertyGroup>
          <ItemGroup>
          <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
          <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
          </ItemGroup>
          </Project>

          Program.cs

          usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

          Expected behavior

          No System.AccessViolationException are thrown and the program exists with status code 0

          Actual behavior

          System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

          Regression?

          With the previous version of the SDK everything worked as espected

          Known Workarounds

          Remove ICU settings
          <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

          Configuration

          .NET SDK v6.0.402
          .NET Runtime v6.0.10
          Architecture: x64
          Windows 10 and 11 both fully updated
          Specific on my machine: Version 21H2 (OS Build 190444.2130)

          Other information

          No response

          Metadata

          Metadata

          Assignees

          Type

          No type

          Projects

          No projects

            Milestone

            Relationships

            None yet

            Development

            No branches or pull requests

            Issue actions

            , 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
            Skip to content

            System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

            Description

            @ThomasSkyldahl

            Description

            Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
            using specific Compare options fails with System.AccessValidationException

            We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

            If ICU settings are disabled everything behaves as normal

            Reproduction Steps

            Setup a new .NET 6 console project with the following files

            Repro.csproj

            <ProjectSdk="Microsoft.NET.Sdk">
            <PropertyGroup>
            <OutputType>Exe</OutputType>
            <TargetFramework>net6.0</TargetFramework>
            <ImplicitUsings>enable</ImplicitUsings>
            <Nullable>enable</Nullable>
            </PropertyGroup>
            <ItemGroup>
            <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
            <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
            </ItemGroup>
            </Project>

            Program.cs

            usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

            Expected behavior

            No System.AccessViolationException are thrown and the program exists with status code 0

            Actual behavior

            System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

            Regression?

            With the previous version of the SDK everything worked as espected

            Known Workarounds

            Remove ICU settings
            <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

            Configuration

            .NET SDK v6.0.402
            .NET Runtime v6.0.10
            Architecture: x64
            Windows 10 and 11 both fully updated
            Specific on my machine: Version 21H2 (OS Build 190444.2130)

            Other information

            No response

            Metadata

            Metadata

            Assignees

            Type

            No type

            Projects

            No projects

              Milestone

              Relationships

              None yet

              Development

              No branches or pull requests

              Issue actions

              , 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
              Skip to content

              System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

              Description

              @ThomasSkyldahl

              Description

              Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
              using specific Compare options fails with System.AccessValidationException

              We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

              If ICU settings are disabled everything behaves as normal

              Reproduction Steps

              Setup a new .NET 6 console project with the following files

              Repro.csproj

              <ProjectSdk="Microsoft.NET.Sdk">
              <PropertyGroup>
              <OutputType>Exe</OutputType>
              <TargetFramework>net6.0</TargetFramework>
              <ImplicitUsings>enable</ImplicitUsings>
              <Nullable>enable</Nullable>
              </PropertyGroup>
              <ItemGroup>
              <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
              <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
              </ItemGroup>
              </Project>

              Program.cs

              usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

              Expected behavior

              No System.AccessViolationException are thrown and the program exists with status code 0

              Actual behavior

              System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

              Regression?

              With the previous version of the SDK everything worked as espected

              Known Workarounds

              Remove ICU settings
              <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

              Configuration

              .NET SDK v6.0.402
              .NET Runtime v6.0.10
              Architecture: x64
              Windows 10 and 11 both fully updated
              Specific on my machine: Version 21H2 (OS Build 190444.2130)

              Other information

              No response

              Metadata

              Metadata

              Assignees

              Type

              No type

              Projects

              No projects

                Milestone

                Relationships

                None yet

                Development

                No branches or pull requests

                Issue actions

                , 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 · Issue #77045 · dotnet/runtime · GitHub
                Skip to content

                System.AccessViolationException when using current version (68.2.0.9) of Microsoft.ICU.ICU4C.Runtime with .NET SDK v6.0.402 #77045

                Description

                @ThomasSkyldahl

                Description

                Hi we are having issues with ICU after installing the new .NET 6 SDK v6.0.402
                using specific Compare options fails with System.AccessValidationException

                We are using up to date versions of Windows 10 and Windows 11 and the same error happens on both with the latest .NET SDK updates.

                If ICU settings are disabled everything behaves as normal

                Reproduction Steps

                Setup a new .NET 6 console project with the following files

                Repro.csproj

                <ProjectSdk="Microsoft.NET.Sdk">
                <PropertyGroup>
                <OutputType>Exe</OutputType>
                <TargetFramework>net6.0</TargetFramework>
                <ImplicitUsings>enable</ImplicitUsings>
                <Nullable>enable</Nullable>
                </PropertyGroup>
                <ItemGroup>
                <PackageReferenceInclude="Microsoft.ICU.ICU4C.Runtime"Version="68.2.0.9" />
                <RuntimeHostConfigurationOptionInclude="System.Globalization.AppLocalIcu"Value="68.2.0.9" />
                </ItemGroup>
                </Project>

                Program.cs

                usingSystem.Globalization;CultureInfo.GetCultureInfo("en-US").CompareInfo.Compare("sample","Sample",CompareOptions.IgnoreSymbols);

                Expected behavior

                No System.AccessViolationException are thrown and the program exists with status code 0

                Actual behavior

                System.AccessViolationException is thrown or Windows Security Exploit Protection kills the program if Control flow guard (CFG) is enabled

                Regression?

                With the previous version of the SDK everything worked as espected

                Known Workarounds

                Remove ICU settings
                <RuntimeHostConfigurationOption Include="System.Globalization.AppLocalIcu" Value="68.2.0.9" />

                Configuration

                .NET SDK v6.0.402
                .NET Runtime v6.0.10
                Architecture: x64
                Windows 10 and 11 both fully updated
                Specific on my machine: Version 21H2 (OS Build 190444.2130)

                Other information

                No response

                Metadata

                Metadata

                Assignees

                Type

                No type

                Projects

                No projects

                  Milestone

                  Relationships

                  None yet

                  Development

                  No branches or pull requests

                  Issue actions