Created by @Spacefan
问题描述
最近在 Ubuntu 20.04 下使用 Python3,出现一个十分奇怪的错误:
ImportError: /lib/x86_64-linux-gnu/libstdc++.so.6: cannot allocate memory in static TLS block
查阅了很多资料,最终定位为 MySQL 的问题。mysql-8.0.21 为使用更快的 TLS 模型进行编译,造成了此 Bug,详见:Bug #30981914: COMPILE WITH FASTER TLS MODEL。Ubuntu 社区也对此进行了标记,详见:ImportError libstdc++.so.6 cannot allocate memory after importing PyQt5.Qt PyQt5.QtCore and cv2。
解决问题
Ubuntu 社区标记下的 Kai Kasurinen 给出了解决方案,即将
libmysqlclient21
的版本号从
8.0.21-0ubuntu0.20.04.3
降级至
8.0.19-0ubuntu5
,具体步骤如下:
- 下载 libmysqlclient21_8.0.19-0ubuntu5_amd64.deb;
- Ubuntu 下安装之:
$ sudo dpkg -i libmysqlclient21_8.0.19-0ubuntu5_amd64.deb
Ok,问题顺利解决!
经验之谈
- 开源软件的稳定性是老大难,所以在作业环境中尽量使用稳定版本,不要一味追求新。有时,一个 Bug 可能会花费好几天的时间才能解决,此时选择版本降级是最佳的解决方案。
- 使用 Linux 过程中出现问题后,寻找面向 Google 的解决方案。由于 Ubuntu 社区庞大,通常情况下你遇到的问题,社区已经有解决方案了。