Home
Categories
WIKI
Topic
User
LANGUAGE:
中文
English
升级 V20 后 docker 容器启动报 exited(139) 的可能解决方案
Experiences and Insight
2360
views ·
1
replies ·
To
floor
Go
158******91
deepin
2020-08-08 06:42
Author
本帖最后由 gmaso 于 2020-8-7 22:43 编辑
现象:从 15.11 升级到 v20 后,之前正常运行的 docker 容器不能启动了,报 exited(139)。
可能原因:
错误139是由具有内存保护的硬件引起的分段错误。它告诉您您的程序正在试图访问内存的一个限制区域。 可能您试图访问只读内存,在代码中的任何地方取消对空指针的引用,或者产生堆栈溢出。这可能与4.11内核中vsyscall链接的更改有关。如果Docker镜像中的glibc版本低于2.14版本,在新内核情况下就可能造成分段错误。
解决办法:
在/etc/default/grub 中修改此命令(空格后添加):
grub_cmdline_linux_default=“splash quiet vsyscall=emulate”
然后 sudo update-grup,重启系统,docker 容器应该可以正常运行了。
容器正常启动后,进入容器把 glibc 升级到 2.14 或以上。然后把 grub 中 vsyscall 的修改还原,因为设置为 emulate 会造成性能损失。
参考:
https://help.aliyun.com/knowledg ... .0.0.5b1224a46IyNve
https://salsa.debian.org/kernel-team/linux/commit/2aced7818ac46ca050ee68255ca20eeb14432a95
http://www.python88.com/topic/40968
Reply
Like 0
Favorite
View the author
All Replies
jingle
deepin
2020-08-08 22:48
#1
谢谢分享
Reply
Like 0
View the author
Please
sign
in first
Featured Collection
Change
[Tutorial] deepin25 WSL Offline Installation Guide
UOS AI 2.8 Released! Three New Intelligent Agents & Major Evolution
Solid Q&A | deepin 25 Common Questions – The Immutable System Edition
New Thread
Popular Events
More
现象:从 15.11 升级到 v20 后,之前正常运行的 docker 容器不能启动了,报 exited(139)。
可能原因:
错误139是由具有内存保护的硬件引起的分段错误。它告诉您您的程序正在试图访问内存的一个限制区域。 可能您试图访问只读内存,在代码中的任何地方取消对空指针的引用,或者产生堆栈溢出。这可能与4.11内核中vsyscall链接的更改有关。如果Docker镜像中的glibc版本低于2.14版本,在新内核情况下就可能造成分段错误。
解决办法:
在/etc/default/grub 中修改此命令(空格后添加):
grub_cmdline_linux_default=“splash quiet vsyscall=emulate”
然后 sudo update-grup,重启系统,docker 容器应该可以正常运行了。
容器正常启动后,进入容器把 glibc 升级到 2.14 或以上。然后把 grub 中 vsyscall 的修改还原,因为设置为 emulate 会造成性能损失。
参考:
https://help.aliyun.com/knowledg ... .0.0.5b1224a46IyNve
https://salsa.debian.org/kernel-team/linux/commit/2aced7818ac46ca050ee68255ca20eeb14432a95
http://www.python88.com/topic/40968