막말로 윈도우의 가상 메모리는 swapfile과 구현이 비슷한데
문제는 저게 MS-DOS 시절이랑 구현이 거기서 거기라서 인터럽션콜도 아니고
데이터가 쓰이는 중에 인터럽션이 나면 Segmentation Fault가 나는데 (Memory could not be read/written)
Memory could not be written이라 해당 가상메모리 주소에 아무것도 없는데 실제 CPU는 그 가상 메모리에 작성을 완료해버리고 (기계어 수준 경로추정, 스펙터 멜트다운과 같은 원리)
프로그램이 그 malloc이 유효한지를 확인하지 않고 다시 read를 수행하면 CPU는 실제 데이터를 반환하는데 커널이 그걸 통으로 nullptr로 던지고 그 nullptr를 반환해버리면서 폭발함
If you have a fediverse account, you can quote this note from your own instance. Search https://serafuku.moe/notes/aha44pmvxn on your instance and quote it. (Note that quoting is not supported in Mastodon.)