Qv2ray / QvPlugin-SSR

适用于 Qv2ray 的 ShadowSocksR 插件,使用此插件在 Qv2ray 中启用 SSR 功能
GNU General Public License v3.0
310 stars 95 forks source link

因 CPU 不支持对应指令集导致崩溃一例 #12

Closed DuckSoft closed 4 years ago

DuckSoft commented 4 years ago

事故 CPU:Intel (R) Pentium (R) CPU 5405U @ 2.30 GHz 事故现场:stream_ietf_ext_ref_xor_ic () 调用了一个不受支持的指令,直接上天 图片

libsodium 似乎已经不是第一次翻车了……得想想办法……

DuckSoft commented 4 years ago

在事主的电脑上手动编译了一次,然后对比了一下 CMakeCache,如下:

图片 图片 图片

应该主要是 AVX AVX2 指令集被砍掉了……Intel 真是刀法精准……

DuckSoft commented 4 years ago

这么看来,SSR 插件可以考虑出几个奇葩版本:

ghost commented 4 years ago

没辙 除非拿来所有阉割版 cpu 编译对应版本

DuckSoft commented 4 years ago

传一份编译好的没有 AVX/AVX2 指令集优化的版本: QvSSRPlugin-v2.0.2-noavx.so.zst.zip 收工!

DuckSoft commented 4 years ago

啊,我又返工了。 我们能否利用 GitHub Actions 的 matrix 功能编译几个砍了 AVX 的版本呢?

@DuckVador 唯一要解决的问题是如何想办法让 CMake 知道我们不想开 AVX……

图片

darsvador commented 4 years ago

啊,我又返工了。 我们能否利用 GitHub Actions 的 matrix 功能编译几个砍了 AVX 的版本呢?

@DuckVador 唯一要解决的问题是如何想办法让 CMake 知道我们不想开 AVX……

cmake .. -DHAVE_AVX512FINTRIN_H=0 -DHAVE_AVXINTRIN_H=0 -DHAVE_AVX2INTRIN_H=0 -DHAVE_AVX_ASM=0

darsvador commented 4 years ago

其他的关于指令集相关的options.

HAVE_CPUID //cpuid
HAVE_EMMINTRIN_H //sse2
HAVE_MMINTRIN_H //mmx
HAVE_PMMINTRIN_H //sse3
HAVE_SMMINTRIN_H //sse4.1
HAVE_TMMINTRIN_H //ssse3
HAVE_WMMINTRIN_H //aes pclmul
DuckSoft commented 4 years ago

@DuckVador 蕉 给 你 了(跑)