最近换了台新笔记本, 趁着新鲜感打算捡起之前弃坑的 Unity 游戏开发学习之路,无意间遇到了一个较为少见的 openssl 问题,在此记录备忘.

手里 Unity 学习资料比较老(用的是 Unity 5.3.4 ), 之前在老笔记本运行一直很稳定, 但新笔记本却无故闪退, 搜索 Unity 论坛也没有找到可参考的案例, 只好自己动手排错.

万幸 Unity 自带了 pdb , 这使问题排查变得无比简单, 直接上 IDA 调试, 定位在 openssl 的 sha1_block_data_order 函数上出现了内存损坏.

上 Google 一搜, 确实发现了 相关issue , 看 issue 似乎只会在部分CPU上出现, 问题比较随机, 新版本已经修复.

但 Unity Editor 的 openssl 为静态编译, 修改起来很麻烦, 好在issue内前辈已经给出临时的解决方案:

set OPENSSL_ia32cap=0 && Unity.exe

经测试可用, 问题解决!