2016-07-22 30 views
0

我們現在在Oracle 1.8.0_60 JVM中遇到了兩次SIGSEGV崩潰,其中錯誤日誌甚至沒有暗示任何庫,只是說崩潰發生在本機代碼中:本機沒有任何命名庫的JVM SIGSEGV崩潰

# Problematic frame: 
# C 0x00007f6d04000000 
# 

# Problematic frame: 
# C 0x00007fc6ec048ff0 
# 

兩個倍崩潰線程是一個應用程序線程。可以是ForkJoinPool或Tomcat ajp-bio線程。

什麼可能會出錯?通常,當本地庫出現故障時,就會包含該庫的名稱。 我看到在消毒hs_err日誌the first crashthe second crashfull version for comparison)並沒有給我更多的想法,可能會出現什麼問題,因爲似乎有足夠的記憶。只是元代空間即將耗盡。

環境在64位Linux上運行:

[[email protected] ~]$ uname -a 
Linux bar 2.6.32-504.16.2.el6.x86_64 #1 SMP Wed Apr 22 06:48:29 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux 
+0

我會嘗試Java 8更新92,以防萬一這有助於您查看是否可以找出線程名稱作爲線索來查明崩潰的原因。 –

+1

向我們展示完整的崩潰轉儲。否則就會出現隨機猜測。 – apangin

+0

對不起,我在格式更改中斷開了鏈接。 'hs_err'-logs現在已正確鏈接。 – jmiettin

回答

1

你只公佈一個完整的日誌,所以它不是真的有可能在這裏發現了一個模式,但C畫幅是在非可執行內存區域,在代碼空間之外。虛擬機事件還顯示了一系列重新優化和偏向撤銷。所以我的猜測是這可能是一個錯誤編譯。

可嘗試:

  1. 更新您的JVM。 8.0_60-b27不是最新的修補程序級別。
  2. 嘗試-XX:-UseBiasedLocking -XX:-TieredCompilation
  3. 嘗試-XX:-UseBiasedLocking -XX:TieredStopAtLevel=1

如果更新VM不解決它,但其中的一個選項不那麼它可能是一個錯誤的VM,你應該用你的Linux發行版或Oracle文件。

+0

在[其他情況下](https://gist.githubusercontent.com/jmiettinen/dde6adb59e31f2de6171bd5af0101ac1/raw/fce0bbebed0eed5475d5d2a013ff774e1738bb49/hs_err_full.log)情況似乎是相同的,除非沒有去最佳化。 感謝您的幫助!現在我只需要想出一個方法來讓這個轉載的方式讓Oracle可以看一看。 – jmiettin