【问题标题】:Java jvm crashes without reason - runs with admin privilegesJava jvm 无故崩溃 - 以管理员权限运行
【发布时间】:2013-08-04 11:00:08
【问题描述】:

我已经尝试过多次重新安装 Java,但是一旦启动我的应用程序,它就会一直崩溃。其他应用程序运行良好(例如 Scenebuilder)。

JVM 不返回错误日志文件,唯一可以抓取的是:

WERF81A.tmp.WERInternalMetadata.xml

WER403.tmp.dmp

WER461.tmp.cab

WER3D3.tmp.appcompat.txt

hs_error_* 文件完全丢失(或者我找不到它)。 这是WERF81A.tmp.WERInternalMetadata.xml的一部分

    <ProcessInformation>
        <Pid>6740</Pid>
        <ImageName>javaw.exe</ImageName>
        <CmdLineSignature>00000000</CmdLineSignature>
        <Uptime>6105</Uptime>
        <ProcessVmInformation>
            <PeakVirtualSize>4891078656</PeakVirtualSize>
            <VirtualSize>4882821120</VirtualSize>
            <PageFaultCount>82469</PageFaultCount>
            <PeakWorkingSetSize>195358720</PeakWorkingSetSize>
            <WorkingSetSize>183607296</WorkingSetSize>
            <QuotaPeakPagedPoolUsage>277440</QuotaPeakPagedPoolUsage>
            <QuotaPagedPoolUsage>261216</QuotaPagedPoolUsage>
            <QuotaPeakNonPagedPoolUsage>43232</QuotaPeakNonPagedPoolUsage>
            <QuotaNonPagedPoolUsage>43168</QuotaNonPagedPoolUsage>
            <PagefileUsage>564998144</PagefileUsage>
            <PeakPagefileUsage>574984192</PeakPagefileUsage>
            <PrivateUsage>564998144</PrivateUsage>
        </ProcessVmInformation>
    </ProcessInformation>
    <ProblemSignatures>
        <EventType>APPCRASH</EventType>
        <Parameter0>javaw.exe</Parameter0>
        <Parameter1>7.0.250.17</Parameter1>
        <Parameter2>51c4b1ff</Parameter2>
        <Parameter3>USER32.dll</Parameter3>
        <Parameter4>6.2.9200.16420</Parameter4>
        <Parameter5>505a9a92</Parameter5>
        <Parameter6>c0000005</Parameter6>
        <Parameter7>000000000003185a</Parameter7>
    </ProblemSignatures>

Windows 错误报告对话框为我提供了 2 个选项:

  • 调试 -> 否定退出代码
  • 关闭 -> exit code 255

应用程序使用最新的jdk7u25。 该应用程序使用 JavaFX 2(工作的 Scenebuilder 应用程序也是如此)。除了上面发布的以外,没有错误日志或代码!

如果以管理员身份运行,应用程序将工作

任何帮助表示赞赏。

  • Windows 8 x64
  • 在其他计算机上运行没有任何问题。
  • UAC 已关闭
  • 崩溃是可重现的。应用程序 gui 出现后 2-3 秒。

【问题讨论】:

  • 很难说。尝试使用不同的值 fox -Xmxn (前段时间我有一个类似的问题,限制最大内存量解决了我的问题)
  • @morgano 试过了。没有改变任何东西。

标签: java crash jvm privileges jvm-crash


【解决方案1】:

我会将此作为评论发布,但我没有足够的代表。首先,您能告诉我们您正在运行的 Windows 版本吗? 98/2000/XP/Vista/7/8?

将您的应用程序带到另一台计算机(使用相同的操作系统)上,看看它是否也崩溃了。如果是,请尝试来自不同系列的另一个操作系统(linux/mac)。如果问题被隔离到特定的操作系统系列,那么问题可能取决于程序中的特定方法调用。如果它只是您的计算机,那么调试将变得更加困难。如果此问题发生在所有操作系统系列中,则怀疑是 JVM 错误。

如果您使用的是 Windows Vista/7,请尝试关闭 UAC。您的用户配置文件权限可能会阻止 java 访问关键库(来自错误转储 User32.dll?)。如果这确实解决了您的问题,请再次在您的计算机和另一台具有不同 UAC 级别的计算机上进行试验,并检查问题是否与特定机器/UAC 级别有关。

在应用程序启动期间监视您的系统内存和堆大小,可能只是您的应用程序实际上填满了 JVM 没有内存来生成 hs_error_* 文件的所有可用 RAM(这发生在我身上之前)。

如果一切都失败了,我建议使用调试器来确定应用程序失败的地方。也许坚持一个 System.exit(0);在程序的不同部分查看它是否在崩溃之前执行到该部分。还要确定崩溃是否是可预测的(即在同一点失败与随机失败)。可预测的崩溃表明代码中的某些内容触发了崩溃。如果您使用的是 JNI,请使用虚拟方法暂时禁用它们以查看崩溃是否仍然发生。

我能说的就这么多……可能有十亿个理由,希望你能找到。

【讨论】:

  • 这是一个 Trillian 覆盖钩子,“失败”集成到 java 中。
  • @DennisFischer 很高兴您发现了问题!
  • 真的! - 也许 JVM 在它能够编写它之前就崩溃了。
  • 那很奇怪...崩溃转储不应该崩溃。哈哈。还有……为什么它可以在管理员权限下工作……你可能想给 trillian 发一封信,哈哈……他们的程序需要一些修复。
猜你喜欢
  • 2020-11-21
  • 2013-07-24
  • 2014-05-18
  • 2012-11-07
  • 2015-11-22
  • 1970-01-01
  • 1970-01-01
  • 2017-07-03
  • 2019-10-15
相关资源
最近更新 更多