#javascript #google-chrome #webgl
#javascript #google-chrome #webgl
Вопрос:
Я разрабатываю игру HTML5 с использованием WebGL, и я сталкиваюсь с этой странной проблемой при запуске ее в Edge и Chrome. Случайным образом страница перейдет на страницу ошибок «О, щелчок!» со статусом STATUS_ACCESS_VIOLATION, полностью отключая меня. Я пришел к выводу, что это не связано с каким-либо конкретным состоянием в игре, поскольку это произойдет случайным образом через любое время в любом месте, поэтому единственная общая тема, о которой я могу думать, — это когда используется WebGL.
Я проанализировал файлы дампа Chrome с помощью WinDbg и обнаружил, что статус ошибки указан как «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 могут вызвать что-то подобное?
Комментарии:
1. Никакой код javascript или webgl не должен вызывать это, похоже, что вы обнаружили ошибку в chromium, и именно туда вы должны ее запилить , включая ваш аварийный дамп.