Linux問題情報分享(1):內核Stack Clash補丁導致Java程序啟動失敗
關於Stack Clash,缺少耐心的讀者,請參考Stack Clash 漏洞正粉碎 Linux 防禦危及 root 權限,較全麵的介紹請參考Stack Guard Page Circumvention Affecting Multiple Packages。
各個Linux發行版都已經發布了升級,合並了上遊補丁。 上遊補丁通過增大stack guard gap(堆棧保護措施,更多請參考Buffer overflow protection)尺寸到1M的方式,修複了Linux Kernel Stack Clash安全漏洞。但是,這個修正會導致JVM崩潰。
終端顯示問題可能是這樣的
# A fatal error has been detected by the Java Runtime Environment:
#
# SIGBUS (0x7) at pc=0x00007f0d190f6ec3, pid=17221, tid=0x00007f0d2be12740
#
# Problematic frame:
# j java.lang.Object.()V+0
調試coredump,結果可能是這樣的
總的說來,就是Java程序啟動失敗。
這個問題會影響CentOS5, 6, 7和部分Debain發行版本。
臨時解決方案的實質是給JVM指定線程堆棧為2M並且重啟之。
對於具體應用,這可以通過給java命令行(或者適當的命令行)增加“-Xss2m”參數或者通過配置文件來調整。也可以通過環境變量JAVA_OPTS(或者對於tomcat,CATALINA_OPTS)來調整。比如
CATALINA_OPTS="${CATALINA_OPTS} -Xss2m"
如果是JNI方式,則可以通過環境變量JAVA_TOOL_OPTIONS來處理。對於這個環境變量,更多信息請參考Linux係統小技巧(4):環境變量JAVA_TOOL_OPTIONS簡介。
最後更新:2017-07-27 09:03:00
上一篇:
阿裏雲安全肖力:邊界消亡後,你需要四個“新認知”
下一篇:
Linux係統小技巧(5):如何列出和排序正在讀寫的進程?
datalist自定義列表的使用心得
第二章 IoC Annotation注入
定時任務時間與當前時間比較的方法
九度題目1323:World Cup Betting
CCAI | 中國科學院前沿科學與教育局副局長王穎:論人工智能與藝術
IE環境下判斷IE版本的語句...[if lte IE 6]……[endif][if lte IE 7]……[endif]
jlink燒寫Nor Flash時出錯正確解決方法匯總:PC of target system has unexpected value after programming
建設投入嚴重不足 構建全新網絡安全體係迫在眉睫
C#多線程學習(二) 如何操縱一個線程
Tomcat的設置3——設置虛擬主機