llama.cpp发布b12083,修复ggml_roll边界检查中的有符号溢出
该版本由GitHub Actions机器人发布,变更说明只有一项:ggml_roll原先用abs(shift) 校验移位量,而abs(INT_MIN) 会在边界检查执行前触发有符号整数溢出(UB),现改为有符号安全的比较方式。
AI解读:llama.cpp发布构建b12083,发布方为ggml-org仓库的GitHub Actions机器人。
该版本列出的代码变更是PR #30375:修复ggml_roll边界检查中的有符号整数溢出问题。
原实现用abs(shift) 校验每个移位量,但abs(INT_MIN) 属于有符号整数溢出,是未定义行为,且在边界检查运行前就被求值。
修复方式是用有符号安全的测试进行比较,替代原来的abs写法。
发布页同时列出macOS、iOS、Linux、Android、Windows等平台的预编译包下载链接,未提供性能或效果数据。
llama.cpp发布构建b12083。发布说明中唯一的代码变更来自PR #30375:修复ggml_roll边界检查中的有符号整数溢出。
修复内容:abs(INT_MIN) 的未定义行为
发布说明写道,ggml_roll原本用abs(shift) 校验每个移位量,但abs(INT_MIN) 是有符号整数溢出,属于未定义行为(UB),且该求值发生在边界检查运行之前。修复改为使用有符号安全的比较方式。这一变更针对的是ggml中ggml_roll的边界检查逻辑。
- 变更编号:PR #30375
- 原写法:abs(shift)
- 问题:abs(INT_MIN) 为有符号整数溢出,属未定义行为,先于边界检查求值
- 新写法:有符号安全的比较
发布范围:多平台预编译包
发布页列出b12083在macOS/iOS、Linux、Android、Windows等平台的预编译产物链接,并包含Vulkan、CUDA 12、CUDA 13、ROCm 10.0、OpenVINO、SYCL、OpenCL Adreno等后端构建。发布说明未提供性能、精度或兼容性方面的测试结果。部分构建在页面中标注为DISABLED,例如启用KleidiAI的macOS Apple Silicon构建和openEuler构建。