Django(DRF)无提示崩溃求助:本地环境运行异常
解决Django Admin访问触发Signal 11(SIGSEGV)崩溃的问题
对齐本地与云端的依赖版本
云端正常但本地崩溃,优先排查依赖版本差异。执行pip freeze导出本地依赖清单,和云端的依赖列表逐一对比,重点核对Django、Django REST Framework以及数据库驱动(如psycopg2、mysqlclient)这类带C扩展的核心库版本,确保完全一致。Signal 11本质是底层内存访问错误,依赖版本不匹配是常见诱因。排查数据库数据一致性问题
即便未修改代码,本地数据库的数据可能存在异常(比如某条记录的字段值超出定义长度、二进制数据损坏),加载Admin页面时触发崩溃。可以尝试:- 从云端导出干净的数据库备份,导入本地后再测试Admin页面
- 临时注释
admin.py中部分模型的注册代码,逐一排查是哪个模型的列表/详情页导致崩溃
重新编译C扩展类依赖
Python 3.9的部分旧版本C扩展可能存在兼容性问题,重新编译依赖可解决这类问题:- 卸载带C扩展的依赖:
pip uninstall -y psycopg2 mysqlclient cryptography(根据你的实际依赖调整) - 重新安装:
pip install psycopg2-binary mysqlclient cryptography(或对应你项目的依赖包)
- 卸载带C扩展的依赖:
开启核心转储定位崩溃点
若以上方法无效,可通过核心转储精准定位崩溃模块:- 执行
ulimit -c unlimited开启核心转储功能 - 运行
python manage.py runserver触发崩溃 - 使用
gdb python core.<进程ID>加载核心文件,输入bt查看调用栈,找到触发崩溃的具体代码位置
- 执行
内容的提问来源于stack exchange,提问作者Bumblebee
相关产品推荐
相关产品推荐

