簡體   English   中英

EXCEPTION_ACCESS_VIOLATION Tomcat 9 外 JVM

[英]EXCEPTION_ACCESS_VIOLATION Tomcat 9 outside JVM

我正在編寫一個消息應用程序作為我 12 年級的期末項目,但我有一個錯誤,我什至不知道如何處理。 我一一禁用和重新啟用 web 應用程序的功能以查看錯誤發生的時間,並且我觀察到當我嘗試將一個用戶的活動對話帶入時,我的服務器崩潰了。 這不會經常發生,似乎是隨機發生的。 這是服務器的錯誤消息:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000007034537d, pid=13536, tid=9944
#
# JRE version: Java(TM) SE Runtime Environment 18.9 (11.0.10+8) (build 11.0.10+8-LTS-162)
# Java VM: Java HotSpot(TM) 64-Bit Server VM 18.9 (11.0.10+8-LTS-162, mixed mode, tiered, compressed oops, g1 gc, windows-amd64)
# Problematic frame:
SELECT * FROM conversations WHERE id1 = '1' OR id2 = '1' ORDER BY lastUpdate DESC LIMIT 9 OFFSET 0;# 
CSELECT * FROM accounts WHERE id = 16;
  [sqlite-3.30.1-03ac4057-b812-49a1-9a10-f02ba1c22986-sqlitejdbc.dll+0x537d]
#
# No core dump will be written. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# C:\Users\paRa\AppData\Local\Temp\\hs_err_pid13536.log
#
# If you would like to submit a bug report, please visit:
#   https://bugreport.java.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

從我在其他帖子上看到的內容來看,此錯誤消息應該指出錯誤所在的位置,在我的情況下,如果我 go 到執行這些 SQL 查詢的特定行,我沒有錯誤。

需要注意的是,當我在activeConversations function 的 API 中設置斷點時,服務器永遠不會崩潰,所以我認為它與正在處理的信息量有關。 但是,由於我在數據庫中沒有那么多信息,所以目前沒有太多信息傳輸。

最可能的解釋(除了 sqlite 中的錯誤)是 JVM 正在運行具有大量線程的網絡服務器,但 sqlite 配置使用單線程模式,因此導致 ZCD69B4957F06CD818D7ZBF3D619 損壞。

檢查您是否正在使用至少多線程模式啟動/配置 sqlite。

https://sqlite.org/threadsafe.html

好的,所以我想提一下@AlBlue 消息對解決我的問題非常有幫助。 正如他所說,我的數據庫(SQLite)同時處理多個請求,所以它崩潰了。 Since I did not know how to configure sqlite to multi threading, I used a deffered object in jquery to make a function run after another. 您可以通過單擊此鏈接查看我使用的內容: Jquery 延遲 Function (順便說一句,站點不安全,所以要小心,我也會在下面發布代碼,以防你們中的一些人不想訪問該站點:

var functionOne = function() {

    var r = $.Deferred();

    // Do your whiz bang jQuery stuff here
    console.log('Function One');

    return r;

};

var functionTwo = function() {

    // Do your whiz bang jQuery stuff here
    console.log('Function Two');

};

// Now call the functions one after the other using the done method
functionOne().done( functionTwo() );

再次感謝大家的回答。 我是這個平台的新人,我不知道這個程序是如何工作的,因為我的答案是解決我的問題,而不是解決錯誤本身? 那么我應該給@AlBlue正確的正確答案。 一旦有人發表評論,我會更新答案。 我想給予適當的信任!

編輯:我閱讀了按鈕的工具提示 =))

訪問沖突意味着本機代碼(在本例中為 SQLite 內部)正在嘗試訪問不允許訪問的memory ,這通常表明該本機庫(或它所依賴的另一個本機組件)中存在錯誤。 不太可能 - 盡管並非不可能 - 問題出在您自己的代碼中。

作為第一步,嘗試查看使用更新版本的 SQLite 是否可以解決問題。 如果這不能解決問題,請嘗試減少重現問題所需的代碼並將其報告給作者或 SQLite 或 SQLite JDBC 驅動程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM