스레드 상태가 파괴된 후 .NET 9 및 .NET 10에서 관리 코드

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF를 사용하는 애플리케이션이 .NET 9.0.5 및 이후 버전(.NET 10 포함)에서 치명적인 단언 오류와 종료 코드 127로 종료됩니다.

Attempt to execute managed code after the .NET runtime thread state has been destroyed.

Microsoft는 .NET 9.0.5에서 더 엄격한 FLS(파이버 로컬 저장소) 스레드 정리를 도입했습니다. OS는 FLS 콜백 실행 순서를 제어하여 IronPDF의 Chrome 렌더러가 자체 종료 시퀀스를 완료하기 전에 CLR 종료를 트리거합니다. 이 문제는 Windows 전용입니다; Linux 및 macOS는 영향을 받지 않습니다. .NET 6, 7, 및 8은 정상적으로 종료됩니다. IronPDF의 PDF 생성은 단언이 발생하기 전에 성공적으로 완료됩니다. Microsoft는 이 문제를 "미래"로 등록했으며, 해결 날짜는 계획되지 않았습니다.

옵션

옵션 1: .NET 8 다운그레이드(권장)

.NET 6.0.36 및 .NET 8.0.26은 정상적으로 종료됩니다. 깨끗한 프로세스 종료가 필요하다면 대상 프레임워크를 다운그레이드하십시오.

옵션 2: CI/CD에서 종료 코드 대신 테스트 결과 파일 사용

PDF 작업은 단언이 발생하기 전에 성공적으로 완료됩니다. 종료 코드 대신 결과 파일에서 테스트 결과를 게시하십시오:

Azure DevOps:

- script: dotnet test --logger "trx" || true
- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/*.trx'
- script: dotnet test --logger "trx" || true
- task: PublishTestResults@2
  inputs:
    testResultsFiles: '**/*.trx'
YAML

GitHub Actions:

- run: dotnet test --logger "trx" || true
- uses: dorny/test-reporter@v1
  with:
    path: '**/*.trx'
    reporter: dotnet-trx
- run: dotnet test --logger "trx" || true
- uses: dorny/test-reporter@v1
  with:
    path: '**/*.trx'
    reporter: dotnet-trx
YAML

옵션 3: 셸에서 종료 코드 필터링

dotnet run 2>stderr.log; EXIT=$?
if grep -q "thread state has been destroyed" stderr.log; then exit 0; else exit $EXIT; fi
dotnet run 2>stderr.log; EXIT=$?
if grep -q "thread state has been destroyed" stderr.log; then exit 0; else exit $EXIT; fi
SHELL

알려진 작동하지 않는 완화책: Installation.SkipShutdown = true, SetErrorMode, Environment.Exit(0), 그리고 종료 전 수동 GC 수집.

Curtis Chau
기술 문서 작성자

커티스 차우는 칼턴 대학교에서 컴퓨터 과학 학사 학위를 취득했으며, Node.js, TypeScript, JavaScript, React를 전문으로 하는 프론트엔드 개발자입니다. 직관적이고 미적으로 뛰어난 사용자 인터페이스를 만드는 데 열정을 가진 그는 최신 프레임워크를 활용하고, 잘 구성되고 시각적으로 매력적인 매뉴얼을 제작하는 것을 즐깁니다.

커티스는 개발 분야 외에도 사물 인터넷(IoT)에 깊은 관심을 가지고 있으며, 하드웨어와 소프트웨어를 통합하는 혁신적인 방법을 연구합니다. 여가 시간에는 게임을 즐기거나 디스코드 봇을 만들면서 기술에 대한 애정과 창의성을 결합합니다.

시작할 준비 되셨나요?
Nuget 다운로드 20,088,359 | 버전: 2026.7 방금 출시
Still Scrolling Icon

아직도 스크롤하고 계신가요?

빠른 증거를 원하시나요? PM > Install-Package IronPdf
샘플을 실행하세요 HTML이 PDF로 변환되는 것을 지켜보세요.