초기화되지 않은 메모리에 접근하는 버그?

프로그램이 수집한 데이터가 이상하다는 이슈가 생겨 조사해보니
위와같이 특정한 코드 조합을 만족하면 값이 설정한값이 아닌 0이나 알수없는 랜덤한값이 읽히는것을 확인했습니다.

링크와 스크린샷을 보면 실행환경에 따라서 버그가 발생하는 조합이 미묘하게 달라지기도 합니다.

레퍼런스참조와 Unsafe, Nullable, Property 등이 부적절하게 조합되며 발생한 현상으로 보이는데, 보다 구체적인 원인을 모르니 이것을 그저 제가 로우레벨의 기능을 오용한 귀책의 사고로 봐야하는지, 아니면 닷넷런타임상에 내포된 중대한 버그나 보안이슈의 가능성으로 받아들여야하는지 모르겠습니다.

1 Like

신기하네요. 디버그 해보려 했는데 제 PC에서는 버그가 나오지 않는것을 보면 이슈 넣어야할 것 같습니다.

웹 컴파일러에선 비슷한 현상이 나고 pc에선 안나네요
image

깃허브 코드스페이스 기준에서는 동일하게 발생하는데,
테스트에 사용하신 sdk 버전 알수있을까요?

마틴 파울러님께서 이런 경우 묻지 말고 지시하라고 했습니다.
(Tell-Don’t-ask)

던져 보면 뭔가 답변이 있지 않을까요? ^^

Uninitialized Memory Access Leading from Specific Code Combinations · Issue #113959 · dotnet/runtime

코파일럿이랑 번역기돌리면서 냅다 올리긴 했는데 빡세네요