4.25 apk runs fine, 4.26.1 apk crash

Hi, so I built the apk 4.25, runs great. I switch to build with 4.26.1, nothing change except engine version, the apk works on some devices, but on Amazon Fire HD (OpenGLES3.1), I get a crash after splash screen.

The log cat shows OpenGLES has error


03-04 02:17:29.678 9500-9541/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:678] 0]LogCore: Display: AppLifetime: Application has entered foreground
03-04 02:17:29.679 9500-9541/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:678] 0]LogCore: Display: AppLifetime: Application has reactivated
03-04 02:17:29.679 9500-9541/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:679] 0]LogTemp: Android resume audio
03-04 02:17:29.680 9500-9541/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:680] 0]LogInit: First time updating LLM stats...
03-04 02:17:29.807 9500-9500/com.xxx.xxx D/UE4: [GameActivity] Battery: status = 2, rawlevel = 69, scale = 100
03-04 02:17:29.807 9500-9500/com.xxx.xxx D/UE4: nativeBatteryEvent(stat = 2, lvl = 69 temp = 26.00 °C)
03-04 02:17:29.834 9500-9586/com.xxx.xxx D/UE4: Assertion failed: Index == 0 [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/OpenGLDrv/Public\OpenGLES.h] [Line: 439]
03-04 02:17:29.834 9500-9586/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:834] 0]Assertion failed: Index == 0 [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/OpenGLDrv/Public\OpenGLES.h] [Line: 439]
03-04 02:17:29.834 9500-9586/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:834] 0]LogAndroid: Error: === Critical error: ===
03-04 02:17:29.834 9500-9586/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:834] 0]LogAndroid: Error:
03-04 02:17:29.834 9500-9586/com.xxx.xxx D/UE4: [2021.03.03-18.17.29:834] 0]LogAndroid: Error: Assertion failed: Index == 0 [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/OpenGLDrv/Public\OpenGLES.h] [Line: 439]


I compared the source with 4.25, and this is the added check that cause the assert, what does it do?


static FORCEINLINE void ColorMaskIndexed(GLuint Index, GLboolean Red, GLboolean Green, GLboolean Blue, GLboolean Alpha)
{
    if (Index > 0 && glColorMaskiEXT)
   {
      // ext or OpenGL ES 3.2
      glColorMaskiEXT(Index, Red, Green, Blue, Alpha);
   }
   else
   {
        check(Index == 0); // THIS IS NEW IN 4.26, WHAT DOES IT DO?
        glColorMask(Red, Green, Blue, Alpha);
   }
}

So I created a fresh third person camera project in 4.26, same error.

Updated 4.26.2, same crash

I created a completely empty project in 4.26.2 and am also hitting this assert on device in development mode.

Worth noting the code has now change to:

static FORCEINLINE void ColorMaskIndexed(GLuint Index, GLboolean Red, GLboolean Green, GLboolean Blue, GLboolean Alpha)
{
if (bSupportsDrawBuffersBlend)
    		{
    			// ES 3.2 or extension
    			glColorMaskiEXT(Index, Red, Green, Blue, Alpha);
    		}
    		else
    		{
    			check(Index == 0);
    			glColorMask(Red, Green, Blue, Alpha);
    		}
    	}

where bSupportsDrawBuffersBlend = (glEnableiEXT != nullptr); so without that Index > 0 as well.

The device I’m testing on is old and doesn’t have Vulkan support, so I can’t just test with that.

Same exact issue.
KFMUWI Android 9, API Level 28 [Fire OS 7]

Kicks out assertion as soon as it deploys and pushes the executable. It launches into dev mode on the device, displays the ue4 splash then kicks the log out and crashes. Anyone find a fix for this yet? Maybe a source cherry pick?

LogPlayLevel: Error:   05-18 23:11:00.622  1831  1929 D UE4     : [2021.05.19-04.11.00:622][  0]LogAndroid: Error:
LogPlayLevel: Error:   05-18 23:11:00.622  1831  1929 D UE4     : [2021.05.19-04.11.00:622][  0]LogAndroid: Error: Assertion failed: Index == 0 [File:D:/Build/++UE4/Sync/Engine/Source/Runtime/OpenGLDrv/Public\OpenGLES.h] [Line: 439]```

I’ve tried both r21e and r22b with the same results even tried grabbing the latest preview sdk in hopes it might be an sdk issue. I’ve also posted my findings in the discord unreal slackers mobile channel. Is there any way to get support on this?

An “ASSERT” is a check that the system works the way it’s supposed to, and “pull the breaks” when it doesn’t.
It turns out, the Amazon device you’re using has never been compatible with what the Unreal Engine needs, but that was “silently ignored” before that ASSERT check was added.
Your options are:

  1. Try to develop a workaround in the code (fork the engine) that works for this device
  2. Target devices that have sufficiently working GPUs
  3. Remove the error check (for the engine) and #yolo it

I have the same problem on ue-4.26.2-4.27.1, can anyone solve it? For a month now I have not been able to solve this problem.

Hello, I have exactly the same issue with UE4.27. Have you managed to solve it? Is there any hope???