agiledragon / agiledragon/gomonkey
MacOS 上的 permission denied 问题,也可能和 cgo 有关
未关闭
- 主要语言
- Go
- 星标
- 2.3k
- 派生
- 192
- 平均合并
- 1 天 6 小时
- 30 天内合并 PR
- 1
描述
环境
1. macOS Sonoma
2. AMD64
3. go 1.20.7
问题
之前都是正常使用,通过 cgo 引入 sqlite 依赖后,运行出现 permission denied 的问题。引入 cgo 的模块,跟 monkey patch 的模块没有任何关联。只是发现引入 cgo 后,monkey patch 的函数地址变得很大,40 多亿的一个整数,没有引入 cgo 之前是 4 千万。
解法
1. 通过 -ldflags=-extldflags=-Wl,-segprot,__TEXT,rwx,rx 参数运行 go test,可行。
2. 换用 https://github.com/bytedance/mockey 库,可行。通过对比代码,发现 mockey 在通过 mprotect 修改失败后,还会通过 mach_vm_protect 再尝试修改。去掉 mach_vm_protect 部分后,mockey 也不能 patch。
贡献指南
这个仓库没有索引到贡献指南
评估
这个 Issue 还没有评估数据。