[✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

Description

@MihuBot

Triage for dotnet/runtime#120577.
Repo filter: All networking issues.
MihuBot version: 554101.
Ping MihaZupan for any issues.

This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
Take any conclusions with a large grain of salt.

Tool logs
dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
[Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
[Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)

Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

  • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
  • Comments: None yet.

PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

  • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
  • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

  • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
  • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

  • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
  • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

Other System.Net.* Test Failures (Not the Same Assertion)

Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

  • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
  • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

  • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
  • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

Summary

  • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
  • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
  • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

Conclusion:
The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


References:

Let me know if you need more details on any of these threads!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No 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" + '
      
      Skip to content

      [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

      Description

      @MihuBot

      Triage for dotnet/runtime#120577.
      Repo filter: All networking issues.
      MihuBot version: 554101.
      Ping MihaZupan for any issues.

      This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
      Take any conclusions with a large grain of salt.

      Tool logs
      dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
      [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
      [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
      

      Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


      Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

      • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
      • Comments: None yet.

      PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

      • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
      • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

      PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

      • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
      • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

      Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

      • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
      • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

      Other System.Net.* Test Failures (Not the Same Assertion)

      Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

      • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
      • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

      Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

      • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
      • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

      Summary

      • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
      • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
      • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

      Conclusion:
      The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


      References:

      Let me know if you need more details on any of these threads!

      Metadata

      Metadata

      Assignees

      No one assigned

        Labels

        No labels
        No labels

        Projects

        No projects

          Milestone

          No 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('^' + ".*" + '
          Skip to content

          [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

          Description

          @MihuBot

          Triage for dotnet/runtime#120577.
          Repo filter: All networking issues.
          MihuBot version: 554101.
          Ping MihaZupan for any issues.

          This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
          Take any conclusions with a large grain of salt.

          Tool logs
          dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
          [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
          [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
          

          Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


          Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

          • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
          • Comments: None yet.

          PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

          • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
          • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

          PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

          • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
          • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

          Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

          • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
          • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

          Other System.Net.* Test Failures (Not the Same Assertion)

          Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

          • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
          • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

          Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

          • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
          • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

          Summary

          • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
          • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
          • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

          Conclusion:
          The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


          References:

          Let me know if you need more details on any of these threads!

          Metadata

          Metadata

          Assignees

          No one assigned

            Labels

            No labels
            No labels

            Projects

            No projects

              Milestone

              No 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('^' + ".*" + '
              Skip to content

              [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

              Description

              @MihuBot

              Triage for dotnet/runtime#120577.
              Repo filter: All networking issues.
              MihuBot version: 554101.
              Ping MihaZupan for any issues.

              This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
              Take any conclusions with a large grain of salt.

              Tool logs
              dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
              [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
              [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
              

              Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


              Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

              • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
              • Comments: None yet.

              PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

              • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
              • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

              PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

              • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
              • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

              Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

              • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
              • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

              Other System.Net.* Test Failures (Not the Same Assertion)

              Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

              • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
              • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

              Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

              • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
              • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

              Summary

              • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
              • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
              • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

              Conclusion:
              The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


              References:

              Let me know if you need more details on any of these threads!

              Metadata

              Metadata

              Assignees

              No one assigned

                Labels

                No labels
                No labels

                Projects

                No projects

                  Milestone

                  No 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" + '
                  Skip to content

                  [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

                  Description

                  @MihuBot

                  Triage for dotnet/runtime#120577.
                  Repo filter: All networking issues.
                  MihuBot version: 554101.
                  Ping MihaZupan for any issues.

                  This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
                  Take any conclusions with a large grain of salt.

                  Tool logs
                  dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
                  [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
                  [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
                  

                  Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


                  Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

                  • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
                  • Comments: None yet.

                  PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

                  • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
                  • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

                  PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

                  • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
                  • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

                  Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

                  • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
                  • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

                  Other System.Net.* Test Failures (Not the Same Assertion)

                  Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

                  • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
                  • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

                  Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

                  • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
                  • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

                  Summary

                  • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
                  • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
                  • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

                  Conclusion:
                  The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


                  References:

                  Let me know if you need more details on any of these threads!

                  Metadata

                  Metadata

                  Assignees

                  No one assigned

                    Labels

                    No labels
                    No labels

                    Projects

                    No projects

                      Milestone

                      No 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('^' + ".*" + '
                      Skip to content

                      [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

                      Description

                      @MihuBot

                      Triage for dotnet/runtime#120577.
                      Repo filter: All networking issues.
                      MihuBot version: 554101.
                      Ping MihaZupan for any issues.

                      This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
                      Take any conclusions with a large grain of salt.

                      Tool logs
                      dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
                      [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
                      [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
                      

                      Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


                      Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

                      • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
                      • Comments: None yet.

                      PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

                      • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
                      • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

                      PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

                      • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
                      • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

                      Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

                      • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
                      • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

                      Other System.Net.* Test Failures (Not the Same Assertion)

                      Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

                      • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
                      • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

                      Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

                      • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
                      • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

                      Summary

                      • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
                      • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
                      • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

                      Conclusion:
                      The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


                      References:

                      Let me know if you need more details on any of these threads!

                      Metadata

                      Metadata

                      Assignees

                      No one assigned

                        Labels

                        No labels
                        No labels

                        Projects

                        No projects

                          Milestone

                          No 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('^' + ".*" + '
                          Skip to content

                          [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

                          Description

                          @MihuBot

                          Triage for dotnet/runtime#120577.
                          Repo filter: All networking issues.
                          MihuBot version: 554101.
                          Ping MihaZupan for any issues.

                          This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
                          Take any conclusions with a large grain of salt.

                          Tool logs
                          dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
                          [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
                          [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
                          

                          Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


                          Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

                          • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
                          • Comments: None yet.

                          PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

                          • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
                          • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

                          PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

                          • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
                          • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

                          Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

                          • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
                          • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

                          Other System.Net.* Test Failures (Not the Same Assertion)

                          Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

                          • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
                          • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

                          Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

                          • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
                          • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

                          Summary

                          • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
                          • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
                          • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

                          Conclusion:
                          The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


                          References:

                          Let me know if you need more details on any of these threads!

                          Metadata

                          Metadata

                          Assignees

                          No one assigned

                            Labels

                            No labels
                            No labels

                            Projects

                            No projects

                              Milestone

                              No 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); } })(); })();
                              Skip to content

                              [✨ Triage] dotnet/runtime#120577 by janvorli - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= ... #1570

                              Description

                              @MihuBot

                              Triage for dotnet/runtime#120577.
                              Repo filter: All networking issues.
                              MihuBot version: 554101.
                              Ping MihaZupan for any issues.

                              This is a test triage report generated by AI, aimed at helping the triage team quickly identify past issues/PRs that may be related.
                              Take any conclusions with a large grain of salt.

                              Tool logs
                              dotnet/runtime#120577: Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests by janvorli
                              [Tool] Searching for Interop.Sys.LSeek assertion, SafeFileHandle.Open assertion, System.Net.Http.Tests HttpWindowsProxyTest.HttpProxy_Local_Bypassed, System.Net.Quic.Functional.Tests.WorkItemExecution, System.Net.Primitives.Pal.Tests assertion, System.Net.NetworkInformation.Functional.Tests assertion (IncludeOpen=True, IncludeClosed=True, IncludeIssues=True, IncludePullRequests=True, Repository=dotnet/runtime)
                              [Tool] Found 103 issues, 198 comments, 40 returned results (18014 ms)
                              

                              Here is a list of related issues and discussions for issue #120577 ("Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests"):


                              Issue #120577 (October 2025) - Assert Interop.Sys.LSeek(this, 0, Interop.Sys.SeekWhence.SEEK_CUR) >= 0 in System.Net.XXX tests

                              • Summary: System.Net.* tests (e.g., NetworkInformation, Primitives.Pal, Quic.Functional) are failing in CI with an assertion failure in Interop.Sys.LSeek during file handle operations on Unix. The stack trace points to SafeFileHandle.Open and OSFileStreamStrategy in CoreLib. The issue includes a known issue template and a table of recent failures, showing this is a recurring and widespread CI problem.
                              • Comments: None yet.

                              PR #120552 (October 2025) - Fix ARM64 ThreadAbort issue

                              • Summary: While not directly about the LSeek assert, the PR author (janvorli) notes in a comment that "There is a couple of failing System.Net.XXX tests. All of the failures in these tests are asserting on" the same Interop.Sys.LSeek assertion as in #120577. This suggests the LSeek assertion is currently a broad CI problem, not just a one-off.
                              • Comments: The assertion is mentioned as a current, widespread CI failure in System.Net tests.

                              PR #53669 (June 2021) - Set of offset-based APIs for thread-safe file IO

                              • Summary: This PR refactored file opening and initialization logic, moving it into SafeFileHandle. It specifically discusses the use of Interop.Sys.LSeek to determine if a file is seekable on Unix, and includes reviewer comments about the reliability and thread-safety of this approach. The code in question is the same area as the assertion in #120577.
                              • Comments: Reviewer (stephentoub) suggests improvements to the thread-safety of the CanSeek logic, and janvorli reports a build breakage on Apple Silicon due to missing headers, showing this area has been fragile and platform-sensitive.

                              Issue #58370 (August 2021) - [API Proposal]: Expose SafeFileHandle.CanSeek

                              • Summary: Proposes adding a CanSeek property to SafeFileHandle, motivated by the need to check seekability for RandomAccess APIs. The discussion notes that the implementation uses Interop.Sys.LSeek to determine seekability. Later comments (tmds) point out that CanSeek does not always indicate support for RandomAccess, and that the rationale for the API may be less relevant as RandomAccess is relaxed to support non-seekable files.
                              • Comments: The discussion highlights that using LSeek to determine seekability is not always reliable, and that this area of the code has been a source of confusion and subtle bugs.

                              Other System.Net.* Test Failures (Not the Same Assertion)

                              Issue #72830 (July 2022) - Assertion failure 0 <= fd && fd < sysconf(_SC_OPEN_MAX) in System.Net.Mail.Functional.Tests

                              • Summary: System.Net.Mail tests fail with an assertion about invalid file descriptors, often -1. The stack trace involves socket operations and closing sockets, not file seeking. The discussion reveals a race condition in socket handle replacement and cleanup.
                              • Comments: While not the same assertion, this shows that file descriptor management in System.Net.* tests is a recurring source of CI instability.

                              Issue #65841 (February 2022) - Assertion failed in System.Net.NetworkInformation.Functional.Tests

                              • Summary: System.Net.NetworkInformation tests crash with a different assertion, but also in Unix-specific code paths. The discussion links the failures to recent PRs and changes in the networking stack.
                              • Comments: Not the same assertion, but shows that System.Net.* tests are sensitive to platform and runtime changes.

                              Summary

                              • #120577 and #120552: The LSeek assertion is currently a widespread and blocking CI issue in System.Net.* tests, not isolated to a single PR or test suite.
                              • #53669 and #58370: The logic for determining seekability using Interop.Sys.LSeek in SafeFileHandle has been fragile and a source of subtle bugs, especially on Unix. Reviewer comments and past breakages indicate this area is tricky and platform-sensitive.
                              • Other System.Net. issues*: There is a history of file descriptor and handle management bugs in System.Net.* tests, often manifesting as assertion failures in CI.

                              Conclusion:
                              The assertion failure in Interop.Sys.LSeek is a known, recurring, and currently widespread CI issue in System.Net.* tests. The underlying logic for seekability in SafeFileHandle has a history of platform-specific bugs and fragility. There are no open issues or PRs with a direct fix yet, but the problem is acknowledged in recent PRs and is likely under investigation by the team.


                              References:

                              Let me know if you need more details on any of these threads!

                              Metadata

                              Metadata

                              Assignees

                              No one assigned

                                Labels

                                No labels
                                No labels

                                Projects

                                No projects

                                  Milestone

                                  No milestone

                                  Relationships

                                  None yet

                                  Development

                                  No branches or pull requests

                                  Issue actions