[next] Fadeouts sometimes SIGSEGV in OpenGL
[/] Todo: Confirm or deny that the crash happens in 32-bit builds
(Partially confirmed; SIGSEGV for playintro
, but not for GFZ1 intermission-leaving?)
In OpenGL in the current next branch, SRB2 SIGSEGVs during the fadeout if you use the playintro
console command, at least while on the title screen.
It also SIGSEGVs if you pause and choose "Return to Title" during the act clear intermission screen of (at least) GFZ1, again during the fadeout, however interestingly doesn't if you do that in (at least) HHZ. (Possibly water-shader-related?)
Copy-pasted from a Discord message:
Judging by that backtrace, it's crashing during...
// -----------------+
// DeleteTexture : Deletes a texture from the GPU and frees its data
// -----------------+
EXPORT void HWRAPI(DeleteTexture) (FTextureInfo *pTexInfo)
{
if (pTexInfo->downloaded)
pglDeleteTextures(1, (GLuint *)&pTexInfo->downloaded);
pTexInfo->downloaded = 0;
}
...during the if
check (https://git.do.srb2.org/Golden/SRB2/blob/print-backtrace/src/hardware/r_opengl/r_opengl.c#L1292), so it seems to be double-freeing a texture or such, therefore crashing when checking its nonexistent downloaded
variable?
This crash has been confirmed by 2 people other than me, however it's worth noting that they both used 64-bit SRB2 builds during testing. This crash does not happen in the official (32-bit) release of v2.2.8.