EGLContextCompatibilityTest: skipped on Linux Error populating SystemInfo. Warning: incomplete system info collection. 0 GPUs: Active GPU: 0 Optimus: false AMD Switchable: false Mac Switchable: false Skipping tests using configuration ES2_OpenGLES_NoFixture because it is not available. Skipping tests using configuration ES3_OpenGLES because it is not available. Skipping tests using configuration ES2_OpenGLES because it is not available. Skipping tests using configuration ES2_OpenGLES_CorruptProgramBinaryForTesting because it is not available. Skipping tests using configuration ES3_OpenGLES_NoFixture because it is not available. Skipping tests using configuration ES3_1_OpenGLES because it is not available. Skipping tests using configuration ES3_OpenGLES_AlwaysEnableEmulatedMultidrawExtensions because it is not available. Skipping tests using configuration ES2_OpenGLES_EmulateClipOrigin because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulateClipOrigin because it is not available. Skipping tests using configuration ES2_OpenGLES_EmulateCopyTexImage2D because it is not available. Skipping tests using configuration ES2_OpenGLES_EmulateCopyTexImage2DFromRenderbuffers because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulateCopyTexImage2D because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulateCopyTexImage2DFromRenderbuffers because it is not available. Skipping tests using configuration ES3_OpenGLES_ForceLumaWorkaroundForSameTextureCopyTexImage2D because it is not available. Skipping tests using configuration ES1_OpenGLES because it is not available. Skipping tests using configuration ES3_OpenGLES_RecreateFboUponFlush because it is not available. Skipping tests using configuration ES2_OpenGLES_ForceInitShaderVariables because it is not available. Skipping tests using configuration ES2_OpenGLES_NoUseIr because it is not available. Skipping tests using configuration ES3_OpenGLES_ScalarizeVecAndMatConstructorArgs because it is not available. Skipping tests using configuration ES3_OpenGLES_ForceInitShaderVariables because it is not available. Skipping tests using configuration ES3_OpenGLES_ExpandFragmentOutputsToVec4 because it is not available. Skipping tests using configuration ES3_OpenGLES_ValidateMaxPerStageUniformBlocksAtCompileTime because it is not available. Skipping tests using configuration ES2_OpenGLES_ForcePassthroughShaders because it is not available. Skipping tests using configuration ES3_OpenGLES_RecreateMipmapLevelsBeforeGenerate because it is not available. Skipping tests using configuration ES2_OpenGLES_UseIntermediateTextureForGenerateMipmap because it is not available. Skipping tests using configuration ES2_OpenGLES_UseIntermediateTextureForGenerateMipmap_UseIntermediateTextureForGenerateMipmap because it is not available. Skipping tests using configuration ES3_1_OpenGLES_RecreateMipmapLevelsBeforeGenerate because it is not available. Skipping tests using configuration ES2_OpenGLES_AlwaysEnableEmulatedMultidrawExtensions because it is not available. Skipping tests using configuration ES3_1_OpenGLES_AlwaysEnableEmulatedMultidrawExtensions because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulatePixelLocalStorage because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulatePixelLocalStorage_DisableDrawBuffersIndexed because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulatePixelLocalStorage_NoSupportsShaderFramebufferFetchEXT because it is not available. Skipping tests using configuration ES3_OpenGLES_EmulatePixelLocalStorage_NoSupportsShaderFramebufferFetchEXT_NoSupportsShaderFramebufferFetchNonCoherentEXT because it is not available. Skipping tests using configuration ES3_1_OpenGLES_EmulatePixelLocalStorage because it is not available. Skipping tests using configuration ES3_1_OpenGLES_EmulatePixelLocalStorage_DisableDrawBuffersIndexed because it is not available. Skipping tests using configuration ES3_1_OpenGLES_EmulatePixelLocalStorage_NoSupportsShaderFramebufferFetchEXT because it is not available. Skipping tests using configuration ES3_1_OpenGLES_EmulatePixelLocalStorage_NoSupportsShaderFramebufferFetchEXT_NoSupportsShaderFramebufferFetchNonCoherentEXT because it is not available. Skipping tests using configuration ES3_OpenGLES_ReadPixelsUsingImplementationColorReadFormatForNorm16 because it is not available. Skipping tests using configuration ES2_OpenGLES_LimitMaxTextureBytesTo1MB because it is not available. Skipping tests using configuration ES3_OpenGLES_LimitMaxTextureBytesTo1MB because it is not available. Skipping tests using configuration ES2_OpenGLES_ForceMinimumMaxVertexAttributes because it is not available. Skipping tests using configuration ES2_OpenGLES_SyncAllVertexArraysToDefault because it is not available. Skipping tests using configuration ES3_OpenGLES_SyncAllVertexArraysToDefault because it is not available. Skipping tests using configuration ES2_OpenGLES_ShiftInstancedArrayDataWithOffset because it is not available. Skipping tests using configuration ES3_OpenGLES_ShiftInstancedArrayDataWithOffset because it is not available. Note: Google Test filter = TransformFeedbackTestVkEvent.StaleAccessFlagsSkipsBarrier/ES3_1_Vulkan_SwiftShader_UseVkEventForBufferBarrier_IsVertexSyncDeferred [==========] Running 1 test from 1 test suite. [----------] Global test environment set-up. [----------] 1 test from TransformFeedbackTestVkEvent [ RUN ] TransformFeedbackTestVkEvent.StaleAccessFlagsSkipsBarrier/ES3_1_Vulkan_SwiftShader_UseVkEventForBufferBarrier_IsVertexSyncDeferred [POC] initializeBarrierTracker(this=0x795ca25eae78) xfbBits=0x0 groundTruthSum=0x0 [POC] acquireBufferHelper(mBuffer.valid=0, &mBuffer=0x781ca267bae8) [POC] initializeBarrierTracker(this=0x781ca267bae8) xfbBits=0x0 groundTruthSum=0xbebebebe [POC] acquireBufferHelper(mBuffer.valid=0, &mBuffer=0x781ca267e4e8) [POC] initializeBarrierTracker(this=0x781ca267e4e8) xfbBits=0x0 groundTruthSum=0xbebebebe [POC] acquireBufferHelper(mBuffer.valid=0, &mBuffer=0x781ca267eae8) [POC] initializeBarrierTracker(this=0x781ca267eae8) xfbBits=0x0 groundTruthSum=0xbebebebe [POC] recordReadBarrier(this=0x781ca267e4e8) stage=12 access=0x4 hasEventAndAccess=0 [POC] recordReadEvent(this=0x781ca267e4e8) non-VkEvent path: stage=12 access=0x4 (feature=1 eventStageValid=1 xfbBits=0x0) [POC] recordWriteBarrier(this=0x781ca267e4e8) writeStage=13 access=0x60 xfbBits(after)=0x1 [POC] recordReadBarrier(this=0x781ca267eae8) stage=12 access=0x4 hasEventAndAccess=0 [POC] recordReadEvent(this=0x781ca267eae8) non-VkEvent path: stage=12 access=0x4 (feature=1 eventStageValid=1 xfbBits=0x0) [POC] recordReadBarrier(this=0x781ca267e4e8) stage=12 access=0x2 hasEventAndAccess=0 [POC] recordReadEvent(this=0x781ca267e4e8) VkEvent path: stage=12 access=0x2 -> mAccessFlags=0x2 groundTruth=0x2 [POC] acquireBufferHelper(mBuffer.valid=1, &mBuffer=0x781ca267e4e8) [POC] initializeBarrierTracker(this=0x781ca267e4e8) xfbBits=0x1 groundTruthSum=0x2 [POC] recordWriteBarrier(this=0x781ca267e4e8) writeStage=13 access=0x60 xfbBits(after)=0x2 [POC] recordReadBarrier(this=0x781ca267e4e8) stage=12 access=0x4 hasEventAndAccess=0 [POC] recordReadEvent(this=0x781ca267e4e8) VkEvent path: stage=12 access=0x4 -> mAccessFlags=0x6 groundTruth=0x4 [POC] recordReadBarrier(this=0x781ca267eae8) stage=12 access=0x4 hasEventAndAccess=0 [POC] recordReadEvent(this=0x781ca267eae8) non-VkEvent path: stage=12 access=0x4 (feature=1 eventStageValid=1 xfbBits=0x0) [POC] recordReadBarrier(this=0x781ca267e4e8) stage=12 access=0x2 hasEventAndAccess=1 =================================================================== *** BUG TRIGGERED: BufferHelper::recordReadBarrier() barrier skip *** =================================================================== hasEventAndAccess(eventStage=12, readAccess=0x2) == true, so the early-return is taken and NO barrier is emitted for this read. But the ground-truth tracker (reset on reinit) shows that since the last initializeBarrierTracker()/write, the only dstAccessMask bits actually emitted for this EventStage were 0x4. mCurrentReadEvents.mAccessFlags[stage] = 0x6 <-- contains STALE bits mPOCGroundTruthReadAccess[stage] = 0x4 <-- correct value stale bits surviving release() = 0x2 Root cause: RefCountedEventArrayWithAccessFlags inherits non-virtual release() from RefCountedEventArray which clears only mBitMask, leaving mAccessFlags[] stale across BufferHelper::initializeBarrierTracker(). The next replaceEventAtStage() OR-accumulates into the stale value, so hasEventAndAccess() reports a barrier that was never emitted. Vulkan consequence: the prior write is NOT made visible to access type 0x2 at this stage -> SYNC-HAZARD-READ-AFTER-WRITE. =================================================================== AddressSanitizer:DEADLYSIGNAL ================================================================= ==3042==ERROR: AddressSanitizer: UNKNOWN SIGNAL on unknown address 0x585502471e10 (pc 0x7a7ca394eeec bp 0x7a7ca414d2c0 sp 0x7ffdf2d10720 T0) #0 0x7a7ca394eeec (/lib/x86_64-linux-gnu/libc.so.6+0x8aeec) (BuildId: 6196744a316dbd57c0fd8968df1680aac482cec4) ==3042==Register values: rax = 0x0000000000000000 rbx = 0x0000000000000be2 rcx = 0x00007a7ca394eeec rdx = 0x0000000000000006 rdi = 0x0000000000000be2 rsi = 0x0000000000000be2 rbp = 0x00007a7ca414d2c0 rsp = 0x00007ffdf2d10720 r8 = 0x0000585502482df0 r9 = 0x00007fffffffff01 r10 = 0x0000000000000008 r11 = 0x0000000000000246 r12 = 0x0000000000000006 r13 = 0x000000000000000c r14 = 0x0000000000000002 r15 = 0x00000f4f94753108 AddressSanitizer can not provide additional info. SUMMARY: AddressSanitizer: UNKNOWN SIGNAL (/lib/x86_64-linux-gnu/libc.so.6+0x8aeec) (BuildId: 6196744a316dbd57c0fd8968df1680aac482cec4) ==3042==ABORTING