Tomcat 由于 EXCEPTION_ACCESS_VIOLATION 导致 JVM 崩溃

Tomcat crashes JVM due to EXCEPTION_ACCESS_VIOLATION

下班一段时间后,我的一位同事似乎决定试用我们的暂存服务器。为了使用新的数据库访问框架进行开发,他安装了一堆东西,但没有注意是否与内部开发的应用程序有任何不需要的交互。

旧的 DBA/Programmer 没有任何类型的框架来处理来自 JSP 应用程序的 SQL 调用,而是编写了一个粗略的连接 class 来访问 MS -SQL'08服务器。有问题的 class 不见了,我们没有它的源代码。

因此,当我回来工作并尝试暂存一个新开发的应用程序时,我设法使 JVM 崩溃,这是转储文件。

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006f19137c, pid=692, tid=6096
#
# JRE version: Java(TM) SE Runtime Environment (7.0_75-b13) (build 1.7.0_75-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V  [jvm.dll+0x12137c]
#
# Core dump written. Default location: C:\Program Files\Apache Software Foundation\Tomcat 7.0\hs_err_pid692.mdmp
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#

整个转储文件位于:pastebin。com/TtgdkLer

我做了什么:

没有任何效果。

我确实发现在主要应用程序 web.xml 上有一个过滤器,如果我删除它,服务器不会崩溃:

  <filter-mapping>
    <filter-name>ConnectionFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

问题是这个特定的过滤器通过身份验证服务器路由连接。这意味着将其关闭将允许任何用户访问 Intranet 上的信息。

老实说,我别无选择。我的最后一个选择是将整个服务器的状态倒回很久以前。有什么建议么?

崩溃报告在堆栈顶部有以下方法: com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext([B[I[BI[B[I[ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/logging/Logger;)I+0


编辑:原始答案已过时

好吧,我再次迁移服务器时又遇到了同样的问题,但是这次由于我更改了DLL,问题没有得到解决或根本没有改变。

我只是补充说,实际的 JAR 文件来自不同的包,这足以导致同样的错误,当我下载并安装正确的 JAR/DLL 组合时,一切都很好。