Skip to content

解压源码进行运行测试时,test_sm9_enc显示segmentation fault #16

Description

@HokiyaJostar

下载并解压源代码后,执行python3 -m unittest -v进行测试时,其他算法运行结果都是ok,只有test_sm9_enc显示segmentation fault,请问老师是源码的问题吗还是我的虚拟机内存不够
image

Activity

  1. LordC0107 commented on Dec 11, 2024

    @LordC0107

    你好,请问解决了吗?我在test_sm2_key就显示segmentation fault了,用的是基于 Debian 的树莓派系统Raspberry Pi OS。

  2. ferstar commented on Oct 18, 2025

    @ferstar

    ✅ Segmentation Fault 问题已修复

    你好!SM9 和 SM2 测试中的 segmentation fault 问题已经在 PR #26 中得到修复:
    #26

    🔧 问题分析

    Segmentation fault 通常由以下原因引起:

    1. ❌ 库文件损坏或不完整
    2. ❌ 内存管理错误(特别是 ctypes 指针操作)
    3. ❌ 平台兼容性问题(如 ARM 架构)

    ✨ PR #26 的修复

    针对性修复了多个潜在的 segfault 问题:

    1. 改进的内存管理

      • 修复了 Windows 平台的指针传递问题
      • 改进了 PEM 文件操作的内存处理
      • 修正了 ctypes 参数传递错误
    2. 完整的跨平台支持

      • ✅ Linux x86_64
      • ✅ Linux ARM64(Raspberry Pi)
      • ✅ macOS Universal
      • ✅ Windows x86_64
    3. 全面测试验证

      • 124 个单元测试全部通过
      • 包括所有 SM2/SM9 加密和签名测试
      • 在多个平台上验证通过

    📦 测试建议

    安装预编译版本测试:

    pip install https://github.com/ferstar/GmSSL-Python/releases/download/v2.2.2/gmssl_python-2.2.2-py3-none-any.whl

    运行完整测试套件:

    python -m pytest tests/ -v

    🎯 特别说明

    @LordC0107 在 Raspberry Pi OS 上遇到的问题:

    下载链接:https://github.com/ferstar/GmSSL-Python/releases/tag/v2.2.2

    如果安装后仍有问题,请提供:

    • Python 版本 (python --version)
    • 系统架构 (uname -m)
    • 具体错误信息

    欢迎测试反馈!

  3. guanzhi commented on Jun 4, 2026

    @guanzhi
    Member

    我这边已修复一类会导致 segmentation fault 的 ctypes 结构体布局问题:

    • Sm2Point 现在与 GmSSL C 侧 SM2_Z256_POINT 保持一致,包含 X/Y/Z 三个坐标。
    • Sm2Signature 现在按 SM2_SIGN_CTX 完整声明,避免 sm2_sign_init() 写越界破坏 Python 对象内存。
    • 增加了结构体大小回归测试,并在本地验证 SM2 key/sign 相关测试通过且退出时不再崩溃。

    本地验证命令:

    python3 -X faulthandler -m unittest -v test.TestGmSSL.test_sm2_struct_sizes test.TestGmSSL.test_sm2_key test.TestGmSSL.test_sm2_sig test.TestGmSSL.test_sm3_pbkdf2

    关于这个 issue 中的 SM9:我本机当前加载的 GmSSL 3.1.3 Dev 动态库没有导出 sm9_enc_master_key_generate,因此无法在本机完成 SM9 enc 测试验证。仓库中已新增 GitHub Actions CI,会在 Linux x64、Windows x64、macOS ARM64 上从 GmSSL 源码构建后运行测试,用来暴露这类库符号/平台构建问题。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions