首页 > 解决方案 > WebGL JavaScript 游戏在 Chrome 中导致 STATUS_ACCESS_VIOLATION

问题描述

我正在使用 WebGL 开发 HTML5 游戏,在 Edge 和 Chrome 上运行它时遇到了这个奇怪的问题。页面将随机转到“Aw,Snap!” 状态为 STATUS_ACCESS_VIOLATION 的错误页面,让我完全退出。我推断这不是由于游戏中的任何特定状态,因为它会在任何位置的任何时间后随机发生,所以我能想到的唯一常见线程是使用 WebGL 时。

我使用 WinDbg 分析了 Chrome 转储文件,发现错误状态列为“0xc0000005 - 0x%p 处的指令引用了 0x%p 处的内存。内存不能为 %s。” 我的着色器会导致这种情况吗?如果这是一个 JavaScript 问题,我想我会在控制台中看到它,并且它不会使整个页面崩溃。我在网上找不到任何可能导致此问题的具体信息,更不用说如何缩小代码中的问题范围了。这是我的着色器代码和转储信息。

顶点着色器:

attribute vec2 a_position;
attribute vec2 a_texcoord;

uniform mat3 u_positionMatrix;
uniform mat3 u_textureMatrix;
varying vec2 v_texcoord;

void main() {
    gl_Position = vec4((u_positionMatrix*vec3(a_position,1)).xy,0,1);
    v_texcoord = (u_textureMatrix*vec3(a_texcoord,1.0)).xy;
}

片段着色器:

precision mediump float;

uniform sampler2D u_texture;
uniform vec4 u_blend;
varying vec2 v_texcoord;

void main() {
    gl_FragColor = texture2D(u_texture,v_texcoord)*u_blend;
}`);

转储分析:

*** WARNING: Unable to verify checksum for combase.dll

KEY_VALUES_STRING: 1

    Key  : AV.Fault
    Value: Read

    Key  : Analysis.CPU.mSec
    Value: 1031

    Key  : Analysis.DebugAnalysisProvider.CPP
    Value: Create: 8007007e on COMPUTER

    Key  : Analysis.DebugData
    Value: CreateObject

    Key  : Analysis.DebugModel
    Value: CreateObject

    Key  : Analysis.Elapsed.mSec
    Value: 1258

    Key  : Analysis.Memory.CommitPeak.Mb
    Value: 336

    Key  : Analysis.System
    Value: CreateObject

    Key  : Timeline.Process.Start.DeltaSec
    Value: 1167

    Key  : WER.Process.Version
    Value: 85.0.4183.102


ADDITIONAL_XML: 1

OS_BUILD_LAYERS: 1

NTGLOBALFLAG:  0

PROCESS_BAM_CURRENT_THROTTLED: 0

PROCESS_BAM_PREVIOUS_THROTTLED: 0

CONTEXT:  (.ecxr)
rax=00007669035b8b00 rbx=00007669035cfb18 rcx=0000000000000000
rdx=00007669035c6520 rsi=0000023237a1e100 rdi=0000023237a1df00
rip=00007ffc13c68c8e rsp=000000ec40bff008 rbp=00000232367f5a80
 r8=0000000000000080  r9=00007ffc13c68c80 r10=00007ffc0dd5f8e0
r11=0000766903209580 r12=0000000000000080 r13=0000000000000000
r14=000000000000001a r15=000000ec40bff030
iopl=0         nv up ei pl nz na po nc
cs=0033  ss=0000  ds=0000  es=0000  fs=0053  gs=002b             efl=00010206
chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2750d6e:
00007ffc`13c68c8e 488b8188050000  mov     rax,qword ptr [rcx+588h] ds:00000000`00000588=????????????????
Resetting default scope

EXCEPTION_RECORD:  (.exr -1)
ExceptionAddress: 00007ffc13c68c8e (chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x0000000002750d6e)
   ExceptionCode: c0000005 (Access violation)
  ExceptionFlags: 00000000
NumberParameters: 2
   Parameter[0]: 0000000000000000
   Parameter[1]: 0000000000000588
Attempt to read from address 0000000000000588

PROCESS_NAME:  chrome.exe

READ_ADDRESS:  0000000000000588 

ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%p referenced memory at 0x%p. The memory could not be %s.

EXCEPTION_CODE_STR:  c0000005

EXCEPTION_PARAMETER1:  0000000000000000

EXCEPTION_PARAMETER2:  0000000000000588

STACK_TEXT:  
000000ec`40bff008 00007ffc`0dd69097     : 00000232`00000002 00000232`367ce330 3f800000`00000000 00003780`5a9f15b6 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2750d6e
000000ec`40bff010 00007ffc`13c68d26     : 00003780`5a9f0a26 00007669`03108270 00000000`00000000 00000000`0000000c : chrome!ovly_debug_event+0x65b587
000000ec`40bff0c0 00007ffc`13ea06d9     : 00000000`0352d800 00007ffc`140f1af6 00003780`5a9f0a16 00007669`03209580 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2750e06
000000ec`40bff110 00007ffc`140e5f2b     : 000000ec`40bff278 00000000`00000080 00001c74`976653c8 00000000`00000080 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x29887b9
000000ec`40bff180 00007ffc`140e684e     : 00000000`00000000 00007ffc`13ea5c18 00007669`03180bc8 00007ffc`140f1143 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce00b
000000ec`40bff1f0 00007ffc`140e69d3     : 00007669`0301c9a0 00007669`03009b60 00000000`00000000 00007ffc`13c632cb : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce92e
000000ec`40bff250 00007ffc`13ea0a1f     : 00007ffc`00000162 00007ffc`140e8bc0 00000000`00000000 00007ffc`13c41d01 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bceab3
000000ec`40bff2a0 00007ffc`13ea0649     : 00007669`031800e0 00007ffc`140f1af6 00000000`00000000 00007669`030089e0 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2988aff
000000ec`40bff320 00007ffc`140e5f2b     : 00000000`3f800000 00000000`00000000 40922696`0999dcb6 00007ffc`11d18cd6 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2988729
000000ec`40bff390 00007ffc`140e684e     : 00000000`00000000 00007ffc`13ea5c18 00007669`03180a08 00007ffc`140f1143 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce00b
000000ec`40bff400 00007ffc`140e69d3     : 00007669`031800e0 00007ffc`140f1af6 00000000`00000000 00007ffc`13c632cb : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce92e
000000ec`40bff460 00007ffc`13ea0a1f     : 00007669`035cf2c0 00007ffc`158e2cf0 00007669`03011be0 00003780`5a9f0ec6 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bceab3
000000ec`40bff4b0 00007ffc`13ea0649     : 000000ec`40bff580 00000000`00000000 000000ec`40bff820 00007ffc`13ea6459 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2988aff
000000ec`40bff530 00007ffc`140e5f2b     : 00000000`00000080 000002ef`524bd980 000002ef`524bdb08 00007ffc`140ec1d6 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2988729
000000ec`40bff5a0 00007ffc`140e684e     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce00b
000000ec`40bff610 00007ffc`140e69d3     : 00007669`03057350 00007ffc`13c4a157 00007669`030a0480 00007ffc`140e8e0d : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bce92e
000000ec`40bff670 00007ffc`140eaacd     : 00000232`37e18f00 5a9f0c01`5e6bc8ec 00007669`031800e0 00007669`03008ac0 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bceab3
000000ec`40bff6c0 00007ffc`143a5370     : 00000232`3ae65910 00000000`00000020 00007669`030572a0 00000000`03057201 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2bd2bad
000000ec`40bff7a0 00007ffc`143a4d6b     : 00000232`35c70740 00000000`00000000 00003780`5a9f0206 00007ffc`0fc8b3b0 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2e8d450
000000ec`40bff8e0 00007ffc`124e28d4     : 000072fd`ab0fe02e 00007ffc`0cfa7f28 00000000`00000000 00007ffc`0cfa7d19 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0x2e8ce4b
000000ec`40bff9e0 00007ffc`0dd67bb3     : 00000000`ffffffff 00003780`5a9f0036 00007ffc`5dd34e80 00000000`00000004 : chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+0xfca9b4
000000ec`40bffad0 00007ffc`0dd32e2e     : 00000232`33c88b00 00000000`00000000 00000000`00000000 00000000`00000000 : chrome!ovly_debug_event+0x65a0a3
000000ec`40bffb80 00007ffc`0dd2c614     : 000000ec`40bffcb0 000000ec`40bffcb8 00007ffc`0cfa98e8 00000000`00000000 : chrome!ovly_debug_event+0x62531e
000000ec`40bffc80 00007ffc`0fcce22c     : 000000ec`40bffd48 00000232`31b8bde0 00000000`00000000 00000000`00000000 : chrome!ovly_debug_event+0x61eb04
000000ec`40bffd10 00007ffc`5dd26fd4     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : chrome!CrashForExceptionInNonABICompliantCodeRange+0x9f9edc
000000ec`40bffd90 00007ffc`5e6fcec1     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : KERNEL32!BaseThreadInitThunk+0x14
000000ec`40bffdc0 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x21


SYMBOL_NAME:  chrome!RelaunchChromeBrowserWithNewCommandLineIfNeeded+2750d6e

MODULE_NAME: chrome

IMAGE_NAME:  chrome.dll

STACK_COMMAND:  ~17s ; .ecxr ; kb

FAILURE_BUCKET_ID:  NULL_CLASS_PTR_READ_c0000005_chrome.dll!RelaunchChromeBrowserWithNewCommandLineIfNeeded

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

IMAGE_VERSION:  85.0.4183.102

FAILURE_ID_HASH:  {5cde37ba-ec14-dc5b-5cfd-48d1b2780b55}

Followup:     MachineOwner

什么甚至会导致这种情况发生?我正在运行 Windows 10 并通过本地网络服务器访问游戏。这也发生在我的手机上运行游戏。这种崩溃不会在 Firefox 中发生。这可能与我的计算机或我的着色器有关,或者哪种 JavaScript 实践可能导致这样的事情?

标签: javascriptgoogle-chromewebgl

解决方案


推荐阅读