secondlife / viewer

🖥️ Second Life's official client
GNU Lesser General Public License v2.1
211 stars 53 forks source link

Crash: LLViewerTextureList::updateImageDecodePriority(903) #2153

Closed sl-service-account closed 1 month ago

sl-service-account commented 3 months ago

BugSplat Key Crash 92973

Sample Version: 7.1.9.10084807842

Sample Callstack:

SecondLifeViewer!LLViewerTextureList::updateImageDecodePriorityC:/a/viewer/viewer/indra/newview/llviewertexturelist.cpp(903)
SecondLifeViewer!LLViewerTextureList::updateImagesFetchTexturesC:/a/viewer/viewer/indra/newview/llviewertexturelist.cpp(1152)
SecondLifeViewer!LLViewerTextureList::updateImagesC:/a/viewer/viewer/indra/newview/llviewertexturelist.cpp(822)
SecondLifeViewer!displayC:/a/viewer/viewer/indra/newview/llviewerdisplay.cpp(814)
SecondLifeViewer!LLAppViewer::doFrameC:/a/viewer/viewer/indra/newview/llappviewer.cpp(1514)
SecondLifeViewer!LLAppViewer::frameC:/a/viewer/viewer/indra/newview/llappviewer.cpp(1347)
SecondLifeViewer!wWinMainC:/a/viewer/viewer/indra/newview/llappviewerwin32.cpp(510)
SecondLifeViewer!invoke_mainD:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_common.inl(118)
SecondLifeViewer!__scrt_common_main_sehD:/a/_work/1/s/src/vctools/crt/vcstartup/src/startup/exe_common.inl(288)
kernel32!BaseThreadInitThunk
ntdll!RtlUserThreadStart
akleshchev commented 3 months ago

There are multiple different callstacks for this updateImageDecodePriority, but originally crashes were happening at if (face && face->getViewerObject() && face->getTextureEntry()) (current main) and once getTextureEntry() check got removed crashes moved to const LLTextureEntry* te = face->getTextureEntry();. Inside getTextureEntry() is an getTE call and it looks likely that getTE was called for a wrong index.

vladyslavasproductengine commented 2 months ago

Passed QA. Verified on the Second Life Release 7.1.10.10582490681 (64bit) on Win10/OSX in the scope of https://github.com/secondlife/iqa/issues/316.