Qv2ray/QvPlugin-SSR

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

DuckSoft opened this issue · 8 comments

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

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

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

图片
图片
图片

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

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

  • QvPluginSSR-NOAVX2
  • QvPluginSSR-NOAVX2-NOAVX
  • QvPluginSSR-NOAVX2-NOAVX-NOSSE
  • QvPluginSSR-NOAVX2-NOAVX-NOSSE-NOFPU
  • ......
  • QvPluginSSR-NOCPU

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

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

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

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

图片

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

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

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

其他的关于指令集相关的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

@duckvador 蕉 给 你 了(跑)