秋来冬风的博客

mmap错误

目录

go1.21前瞻

windows允许处理异常页面错误

go1.21正在开发中,发行说明草案 提到预计2023年8月发布

根据提交信息 runtime: Allow handling of EXCEPTION_IN_PAGE_ERROR go1.21允许在windows通过debug.SetPanicOnFault 处理内存映射文件的访问故障(例如,内存映射文件所在的驱动器被弹出)

例如来源于 golang/go#58457的例子 内存映射外部磁盘上的文件(使用CreateFileMapping / MapViewOfFile) 调用debug.SetPanicOnFault(true) 弹出外部磁盘 尝试从内存映射中读取

看到的是? The runtime faults (Exception 0xc0000006 0x0 …) 这不是panic,不能通过recover恢复

go1.21应该是看到的 panic …

根据 SetPanicOnFault文档这种情况当 调用debug.SetPanicOnFault(true) 后使用内存映射文件的程序或不安全的内存操作可能会导致非零地址出错;SetPanicOnFault允许这样的程序请求运行时只触发一次panic,根据golang/go#58457 至少在go1.19不是这样,截至发布前,没看到go官方打算将修复的提交反向移植到go1.20和go1.19的下一个次要版本

Tags: