Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

The 1.11/1.11.1 Android mystery crash thread! #14082

Closed
hrydgard opened this issue Feb 8, 2021 · 24 comments
Closed

The 1.11/1.11.1 Android mystery crash thread! #14082

hrydgard opened this issue Feb 8, 2021 · 24 comments

Comments

@hrydgard
Copy link
Owner

hrydgard commented Feb 8, 2021

First crashes are in!

I'm hoping to see a lot less no-call-stack crashes this time around, with the new exception handler. Let's see how it goes, so far, so good. Starting out weird though, a logoscreen crash?

Itel itel W5001P
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.ppsspp.ppsspp <<<

backtrace:
  #00  pc 00000000005120c8  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so (LogoScreen::render()+43)
  #00  pc 00000000009f9079  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so (ScreenManager::render()+88)
  #00  pc 00000000004f34b5  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so (NativeRender(GraphicsContext*)+508)
  #00  pc 00000000004ecd8f  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so (UpdateRunLoopAndroid(_JNIEnv*)+18)
  #00  pc 00000000004ee699  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so
  #00  pc 00000000002c24d9  /data/app/org.ppsspp.ppsspp-67DzoQ04oxgto8D31lAYuQ==/lib/arm/libppsspp_jni.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+24)
  #00  pc 0000000000047b2b  /system/lib/libc.so (__pthread_start(void*)+22)
  #00  pc 000000000001afef  /system/lib/libc.so (__start_thread+32)

This one is an alignment error: (driver bug, or data we pass in somewhere?)

signal 7 (SIGBUS), code 1 (BUS_ADRALN)

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.ppsspp.ppsspp <<<

backtrace:
  #00  pc 00000000000a5898  /vendor/lib64/hw/vulkan.msm8953.so (qglinternal::vkAcquireImageANDROID(VkDevice_T*, VkImage_T*, int, VkSemaphore_T*, VkFence_T*)+88)
  #00  pc 00000000000235b4  /system/lib64/libvulkan.so (vulkan::driver::AcquireNextImageKHR(VkDevice_T*, VkSwapchainKHR_T*, unsigned long, VkSemaphore_T*, VkFence_T*, unsigned int*)+592)
  #00  pc 000000000063a518  /data/app/org.ppsspp.ppsspp-6DaeytBdsGE179vNmfw0Cg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (VulkanRenderManager::BeginSubmitFrame(int)+112)
  #00  pc 0000000000637c34  /data/app/org.ppsspp.ppsspp-6DaeytBdsGE179vNmfw0Cg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (VulkanRenderManager::Run(int)+28)
  #00  pc 000000000063717c  /data/app/org.ppsspp.ppsspp-6DaeytBdsGE179vNmfw0Cg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (VulkanRenderManager::ThreadFunc()+108)
  #00  pc 000000000063b174  /data/app/org.ppsspp.ppsspp-6DaeytBdsGE179vNmfw0Cg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (VulkanRenderManager::*)(), VulkanRenderManager*> >(void*)+64)
  #00  pc 00000000000e68e0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #00  pc 0000000000084c54  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

All 8 crashes we have so far are wacky graphics driver crashes. This is, well, both good and bad, but it's great to see that the exception handler probably have eliminated all those pesky no-call-stack crashes that happens when games crash. Although I guess it's also not great that those are completely invisible now... But we could report them to our own system, and maybe should.

@unknownbrackets
Copy link
Collaborator

We should already report them to report.ppsspp.org if that's enabled.

-[Unknown]

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

Well, yes, but we are not reporting all of them. Especially not those that happen with "ignore bad memory access" within the games' memory space, with fast memory enabled. (we just ignore or substitute with 0 in that case, previously the app would die)

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

A cwcheat one!

00  pc 00000000000831f0  /apex/com.android.runtime/lib64/bionic/libc.so (abort+160)
  #00  pc 0000000000008a14  /system/lib64/liblog.so (__android_log_assert+328)
  #00  pc 000000000065bbbc  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+248)
  #00  pc 000000000039f330  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CWCheatEngine::InterpretNextOp(CheatCode const&, unsigned long&)+88)
  #00  pc 000000000039e14c  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CWCheatEngine::Run()+116)
  #00  pc 000000000039d834  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (hleCheat(unsigned long long, int)+748)
  #00  pc 000000000039ae68  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CoreTiming::Advance()+204)
  #00  pc 0000000000475214  /data/app/org.ppsspp.ppsspp-wReXsNwwzAqO_VdkunsbGA==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (__KernelReSchedule(char const*)+40)
  #00  pc 00000000000019ec  <anonymous>

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

CheatOperation CWCheatEngine::InterpretNextOp(const CheatCode &cheat, size_t &i) {
	if (cheat.fmt == CheatCodeFormat::CWCHEAT)
		return InterpretNextCwCheat(cheat, i);
	else if (cheat.fmt == CheatCodeFormat::TEMPAR)
		return InterpretNextTempAR(cheat, i);
	else
		_assert_(false);
	return { CheatOp::Invalid };
}

So that means unknown cheat code format. We shouldn't crash, at least, this needs fixing.

@unknownbrackets
Copy link
Collaborator

Hm, that shouldn't happen?

It's pushed here:

ppsspp/Core/CwCheat.cpp

Lines 121 to 122 in b539ce8

cheats_.push_back({ codeFormat_, pendingLines_ });
pendingLines_.clear();

And that's set here:

ppsspp/Core/CwCheat.cpp

Lines 207 to 214 in b539ce8

if (codeFormat_ == CheatCodeFormat::UNDEFINED) {
codeFormat_ = format;
} else if (codeFormat_ != format) {
AddError("mixed code format (cwcheat/tempar)");
lastCheatInfo_ = { 0 };
pendingLines_.clear();
cheatEnabled_ = false;
}

Which is set here:

ppsspp/Core/CwCheat.cpp

Lines 192 to 197 in b539ce8

ParseDataLine(line.substr(2), CheatCodeFormat::CWCHEAT);
return;
case 'M':
// TempAR data line.
ParseDataLine(line.substr(2), CheatCodeFormat::TEMPAR);

It shouldn't be possible to add to pendingLines_ and have cheatEnabled_ true unless codeFormat_ is valid. I'm worried this means the cheat data was corrupted in memory.

-[Unknown]

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

Yeah, that might be a likely, and scary, explanation.

Here's another one, maybe a postshader failing to compile and us not handling it? Or wait, we compile shaders on the other thread now.. hm.

 #00  pc 0000000000063bc4  /system/lib/libc.so (pthread_mutex_lock+4)
  #00  pc 0000000000069339  /system/lib/libc.so (je_arena_dalloc_large+20)
  #00  pc 000000000007b741  /system/lib/libc.so (je_free+68)
  #00  pc 00000000003f62ff  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (GLRenderManager::CreateShader(unsigned int, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&)+398)
  #00  pc 00000000003fb11d  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerGLES::CompileDraw2DProgram()+388)
  #00  pc 00000000003fb695  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerGLES::CreateDeviceObjects()+28)
  #00  pc 00000000003fcaaf  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerGLES::DeviceRestore(Draw::DrawContext*)+12)
  #00  pc 0000000000465fff  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (GPUCommon::DeviceRestore()+28)
  #00  pc 00000000003f9a33  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (GPU_GLES::DeviceRestore()+6)
  #00  pc 00000000004f2a2d  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (NativeInitGraphics(GraphicsContext*)+1024)
  #00  pc 00000000004ee65f  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000)
  #00  pc 00000000002c24d9  /data/app/org.ppsspp.ppsspp-LbQd1oOoRpPhQ5V0XSJE3w==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+24)
  #00  pc 00000000000632f9  /system/lib/libc.so (__pthread_start(void*)+22)
  #00  pc 000000000001de51  /system/lib/libc.so (__start_thread+24)```
  #00  pc 0000000000b42100  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so (UIScreen::preRender()+44)
  #00  pc 0000000000b4163c  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so (ScreenManager::render()+132)
  #00  pc 000000000066f348  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so (NativeRender(GraphicsContext*)+640)
  #00  pc 0000000000666aac  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so (UpdateRunLoopAndroid(_JNIEnv*)+32)
  #00  pc 0000000000668db4  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so
  #00  pc 00000000003a81dc  /data/app/org.ppsspp.ppsspp-2/lib/arm64/libppsspp_jni.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+44)
  #00  pc 000000000006a35c  /system/lib64/libc.so (__pthread_start(void*)+208)
  #00  pc 000000000001db68  /system/lib64/libc.so (__start_thread+

The LogoScreen crash I posted previously is the top crash currently, very strange.

@iota97
Copy link
Contributor

iota97 commented Feb 8, 2021

About the LogoScreen since ed8188e there is:

double rate = std::max(30.0, (double)System_GetPropertyFloat(SYSPROP_DISPLAY_REFRESH_RATE));
double sinceStart = (double)frames_ / rate;

May some device return some broken value or the refresh rate variable is not yet set? Getting either a NaN or a big number into a division by zero could lead to some float error crash maybe?

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 8, 2021

Yeah, I suppose so, though no matter what, floating point division shouldn't crash. Maybe something wacky happens with the math later. Though either way, the std::max should have taken care of it...

Top crasher, passing LogoScreen, is now this lovely specimen:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> org.ppsspp.ppsspp <<<

backtrace:
  #00  pc 0000000000506b5c  /data/app/~~nXj0luwk0-4glfNdSp69rQ==/org.ppsspp.ppsspp-ClctrPMq4af_tatLBp9U2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (Memory::Write_Opcode_JIT(unsigned int, Memory::Opcode const&)+16)
  #00  pc 00000000004ecce0  /data/app/~~nXj0luwk0-4glfNdSp69rQ==/org.ppsspp.ppsspp-ClctrPMq4af_tatLBp9U2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (JitBlockCache::FinalizeBlock(int, bool)+128)
  #00  pc 000000000037fde8  /data/app/~~nXj0luwk0-4glfNdSp69rQ==/org.ppsspp.ppsspp-ClctrPMq4af_tatLBp9U2Q==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (MIPSComp::Arm64Jit::Compile(unsigned int)+248)
  #00  pc 00000000000001a0  <anonymous>

That one I can see how it happens, if we try to compile at a bad address. (Read_Opcode_JIT which is called before Write_Opcode_JIT checks the address, write doesn't). We're already screwed here, but shouldn't let PPSSPP crash.

@nassau-tk
Copy link
Contributor

Excuse me?
I can't download the v1.11 for Android from Download page.

Is it normally?

But, I can download v1.11-2-gb539ce8c2.

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 9, 2021

Yeah, that's a bug in the build server. 1.11-2 will serve you fine. You can also download 1.11 signed with release keys from ppsspp.org.

@unknownbrackets
Copy link
Collaborator

if we try to compile at a bad address.

Maybe that's a Resume on a jump to bad address? In theory, we shouldn't even try to compile on a bad address...

Though either way, the std::max should have taken care of it...

I suppose Bad Things could occur if SYSPROP_DISPLAY_REFRESH_RATE is NaN. But yeah, wouldn't crash there...

We don't know what the LogoScreen signal is, do we? If it's a nullptr, etc.?

-[Unknown]

hrydgard added a commit that referenced this issue Feb 9, 2021
…ip dispatcher exceptions.

It would then just fall through into the compiler and die.

Should remove one of the "mystery" crashes from #14082.
@hrydgard
Copy link
Owner Author

hrydgard commented Feb 9, 2021

The LogoScreen signal is signal 11 (SIGSEGV), code 1 (SEGV_MAPERR)

As for the compile at bad address, explanation and tentative fix is in #14085.

(by the way, browsing crashes in Play Console's laughably slow UI, it's so nice to not have to wade through a zillion different empty stack reports... far more actually have substance now, making real issues stand out better)

hrydgard added a commit that referenced this issue Feb 9, 2021
…ip dispatcher exceptions.

It would then just fall through into the compiler and die.

Should remove one of the "mystery" crashes from #14082.
@hrydgard
Copy link
Owner Author

hrydgard commented Feb 9, 2021

backtrace:
  #00  pc 000000000001a48c  /system/lib/libc.so (abort+63)
  #00  pc 00000000000065c3  /system/lib/liblog.so (__android_log_assert+154)
  #00  pc 00000000004e4ef5  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+116)
  #00  pc 00000000004b8095  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (GLPushBuffer::Unmap()+36)
  #00  pc 0000000000407967  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (DrawEngineGLES::EndFrame()+34)
  #00  pc 00000000004fc52d  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (EmuScreen::render()+508)
  #00  pc 00000000009f9079  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (ScreenManager::render()+88)
  #00  pc 00000000004f34b5  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (NativeRender(GraphicsContext*)+508)
  #00  pc 00000000004ecd8f  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (UpdateRunLoopAndroid(_JNIEnv*)+18)
  #00  pc 00000000004ee699  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so
  #00  pc 00000000002c24d9  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+24)
  #00  pc 0000000000047ba3  /system/lib/libc.so (__pthread_start(void*)+22)
  #00  pc 000000000001b067  /system/lib/libc.so (__start_thread+32)
  #00  pc 000000000227e774  /vendor/lib64/egl/libGLES_mali.so (vkUnmapMemory+36)
  #00  pc 0000000000632e08  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (VulkanPushBuffer::Unmap()+160)
  #00  pc 0000000000b37e04  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (Draw::VKContext::EndFrame()+28)
  #00  pc 0000000000b416d0  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (ScreenManager::render()+280)
  #00  pc 000000000066f348  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (NativeRender(GraphicsContext*)+640)
  #00  pc 00000000006684dc  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (Java_org_ppsspp_ppsspp_NativeActivity_runEGLRenderLoop+748)
  #00  pc 0000000000003198  /data/app/org.ppsspp.ppsspp-ycY2uZ5elmI2WFom-OavBg==/oat/arm64/base.odex (art_jni_trampoline+152)
 #00  pc 00000000004e4ef5  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+116)
  #00  pc 00000000004998d5  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (PointerWrap::DoMarker(char const*, unsigned int)+96)
  #00  pc 0000000000499c27  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (PointerWrapSection::~PointerWrapSection()+18)
  #00  pc 00000000003439a5  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (__InterruptsDoStateLate(PointerWrap&)+60)
  #00  pc 000000000033e42f  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (__KernelDoState(PointerWrap&)+446)
  #00  pc 00000000003dc7ff  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (SaveState::SaveStart::DoState(PointerWrap&)+322)
  #00  pc 00000000003dc419  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (CChunkFileReader::Error CChunkFileReader::LoadPtr<SaveState::SaveStart>(unsigned char*, SaveState::SaveStart&, std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>>*)+40)
  #00  pc 00000000003dfc4f  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (CChunkFileReader::Error CChunkFileReader::Load<SaveState::SaveStart>(std::__ndk1::basic_string<char, CChunkFileReader::Error::char_traits<char>, CChunkFileReader::Error::allocator<char>> const&, CChunkFileReader::Error::allocator<char>*, SaveState::SaveStart&, std::__ndk1::basic_string<char, CChunkFileReader::Error::char_traits<char>, CChunkFileReader::Error::allocator<char>> const&)+122)
  #00  pc 00000000003df0c5  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (SaveState::Process()+644)
  #00  pc 00000000003e2c2b  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (PSP_RunLoopWhileState()+114)
  #00  pc 00000000004fc415  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (EmuScreen::render()+228)
  #00  pc 00000000009f9079  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (ScreenManager::render()+88)
  #00  pc 00000000004f34b5  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (NativeRender(GraphicsContext*)+508)
  #00  pc 00000000004edfcb  /data/app/org.ppsspp.ppsspp-HOgw25O8DAkSqwWYd8k21A==/split_config.armeabi_v7a.apk!lib/armeabi-v7a/libppsspp_jni.so (offset 0x1000) (Java_org_ppsspp_ppsspp_NativeActivity_runEGLRenderLoop+326)
 #00  pc 00000000004ee75c  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (std::__ndk1::__hash_table<std::__ndk1::__hash_value_type<unsigned int, int>, std::__ndk1::__unordered_map_hasher<unsigned int, std::__ndk1::__hash_value_type<unsigned int, int>, std::__ndk1::hash<unsigned int>, true>, std::__ndk1::__unordered_map_equal<unsigned int, std::__ndk1::__hash_value_type<unsigned int, int>, std::__ndk1::equal_to<unsigned int>, true>, std::__ndk1::allocator<std::__ndk1::__hash_value_type<unsigned int, int>>>::__rehash(unsigned long)+216)
  #00  pc 00000000004ee4b4  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000)
  #00  pc 00000000004ee334  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000)
  #00  pc 00000000004ecd5c  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (JitBlockCache::FinalizeBlock(int, bool)+252)
  #00  pc 000000000037fde8  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (MIPSComp::Arm64Jit::Compile(unsigned int)+248)
 

^ Starting to feel like we have some creepy heap corruption...

 #00  pc 0000000000626148  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (GLQueueRunner::RunSteps(std::__ndk1::vector<GLRStep*, std::__ndk1::allocator<GLRStep*>> const&, bool)+528)
  #00  pc 0000000000621b70  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (GLRenderManager::Run(int)+380)
  #00  pc 000000000062195c  /data/app/org.ppsspp.ppsspp-gzWPq5FJ79XNVb4em8LQaQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (GLRenderManager::ThreadFrame()+420)
 #00  pc 00000000004e4ef5  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+116)
  #00  pc 00000000004b8095  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (GLPushBuffer::Unmap()+36)
  #00  pc 0000000000407967  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (DrawEngineGLES::EndFrame()+34)
  #00  pc 00000000004fc52d  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (EmuScreen::render()+508)
  #00  pc 00000000009f9079  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (ScreenManager::render()+88)
  #00  pc 00000000004f34b5  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (NativeRender(GraphicsContext*)+508)
  #00  pc 00000000004ecd8f  /data/app/org.ppsspp.ppsspp-iPv2msUb-4nc2_wnQzmOfA==/lib/arm/libppsspp_jni.so (UpdateRunLoopAndroid(_JNIEnv*)+18)

@hrydgard hrydgard changed the title The 1.11 Android mystery crash thread! The 1.11/1.11.1 Android mystery crash thread! Feb 12, 2021
@hrydgard
Copy link
Owner Author

hrydgard commented Feb 13, 2021

This one is not very common (clearly one of the late memsets in CISO..::ReadBlocks):

 #00  pc 000000000007f4cc  /apex/com.android.runtime/lib64/bionic/libc.so (memset+140)
  #00  pc 00000000003f2e2c  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CISOFileBlockDevice::ReadBlocks(unsigned int, int, unsigned char*)+588)
  #00  pc 00000000003fa004  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (ISOFileSystem::ReadFile(unsigned int, unsigned char*, long long, int&)+884)
  #00  pc 00000000003fea98  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (MetaFileSystem::ReadFile(unsigned int, unsigned char*, long long, int&)+228)
  #00  pc 00000000004db324  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (AsyncIOManager::ProcessEvent(AsyncIOEvent)+92)
  #00  pc 0000000000439f64  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (ThreadEventQueue<NoBase, AsyncIOEvent, AsyncIOEventType, (AsyncIOEventType)0, (AsyncIOEventType)1, (AsyncIOEventType)2>::RunEventsUntil(unsigned long long)+248)
  #00  pc 0000000000437a90  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000)
  #00  pc 00000000003a8474  /data/app/org.ppsspp.ppsspp-cB-6xkViiFH4CfuXcwN5Rw==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+44)
  #00  pc 00000000000e34a4  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)
  #00  pc 0000000000084e80  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)

#00  pc 0000000000b246c8  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (inflate+776)
  #00  pc 00000000003f2e88  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CISOFileBlockDevice::ReadBlocks(unsigned int, int, unsigned char*)+680)
  #00  pc 00000000003fa004  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (ISOFileSystem::ReadFile(unsigned int, unsigned char*, long long, int&)+884)
  #00  pc 00000000003fea98  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (MetaFileSystem::ReadFile(unsigned int, unsigned char*, long long, int&)+228)
  #00  pc 00000000004db324  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (AsyncIOManager::ProcessEvent(AsyncIOEvent)+92)
  #00  pc 0000000000439f64  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (ThreadEventQueue<NoBase, AsyncIOEvent, AsyncIOEventType, (AsyncIOEventType)0, (AsyncIOEventType)1, (AsyncIOEventType)2>::RunEventsUntil(unsigned long long)+248)
  #00  pc 0000000000437a90  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000)
  #00  pc 00000000003a8474  /data/app/org.ppsspp.ppsspp-mPpr3es4HFlbLULuJGME1w==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (void* std::__ndk1::__thread_proxy<std::__ndk1::tuple<std::__ndk1::unique_ptr<std::__ndk1::__thread_struct, std::__ndk1::default_delete<std::__ndk1::__thread_struct> >, void (*)()> >(void*)+44)
  #00  pc 00000000000e205c  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36)

Odd driver crash:

 #00  pc 0000000000070a00  /vendor/lib64/hw/vulkan.msm8953.so (qglinternal::vkCreateImage(VkDevice_T*, VkImageCreateInfo const*, VkAllocationCallbacks const*, VkImage_T**)+28)
  #00  pc 000000000062e4ac  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (VulkanTexture::CreateDirect(VkCommandBuffer_T*, VulkanDeviceAllocator*, int, int, int, VkFormat, VkImageLayout, unsigned int, VkComponentMapping const*)+260)
  #00  pc 000000000062e4ac  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (VulkanTexture::CreateDirect(VkCommandBuffer_T*, VulkanDeviceAllocator*, int, int, int, VkFormat, VkImageLayout, unsigned int, VkComponentMapping const*)+260)
  #00  pc 0000000000b39364  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (Draw::VKTexture::Create(VkCommandBuffer_T*, VulkanPushBuffer*, Draw::TextureDesc const&, VulkanDeviceAllocator*)+460)
  #00  pc 0000000000b3b130  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (Draw::VKContext::CreateTexture(Draw::TextureDesc const&)+132)
  #00  pc 00000000006fcc60  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (ManagedTexture::LoadFromFileData(unsigned char const*, unsigned long, ImageFileType, bool, char const*)+884)
  #00  pc 00000000006fce10  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (ManagedTexture::LoadFromFile(std::__ndk1::basic_string<char, std::__ndk1::char_traits<char>, std::__ndk1::allocator<char>> const&, ImageFileType, bool)+132)
  #00  pc 00000000006fcf8c  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (CreateTextureFromFile(Draw::DrawContext*, char const*, ImageFileType, bool)+124)
  #00  pc 000000000065861c  /data/app/org.ppsspp.ppsspp-e9MUzwuUJYtcoKu1aqxsaw==/lib/arm64/libppsspp_jni.so (UIContext::BeginFrame()+280)

@hrydgard
Copy link
Owner Author

hrydgard commented Feb 13, 2021

Many of the latter ones are definitely not new crashes, they've just kinda surfaced now that so much garbage crashes are gone due to the exception handler.

Like, it seems to be doable to crash the CISO code with a corrupt file.

Still, the LogoScreen crash is haunting me. But it could just be one of the many weird intermittent GL initialization / task switching bugs I guess...

@unknownbrackets
Copy link
Collaborator

If inflate() is crashing, I suppose we either have corruption in the z_stream or we need to update zlib. Or I suppose it could be #14132 if it's writing outside valid memory in z.next_out.

-[Unknown]

Panderner added a commit to Panderner/ppsspp that referenced this issue Feb 14, 2021
* Adds two new tests to GPU driver test screen: Adreno shader logic test and flat shading

The adreno test tests for the bug mentioned in hrydgard#13910.
Very clear repro on Adreno 630, Pocophone F1.

The flat shading test is an untested attempt at a repro of

(will test that tomomorrow).

* Add texture to flat shaded test.

* Compat: Note that 3 LEGO games those are require Buffered rendering

* More GPU test improvements

* Fix the flat test. Unfortunately doesn't repro the bug :(

* GL FB readback: Only use "inout" if we actually want to read from the fb.

* Headless: Allow screenshot compare without backend.

This makes not just graphics-enabled tests work in headless on softgpu,
but also screenshot comparison ones.

* Headless: Read expected file as a FileLoader.

This makes it possible to run tests from network locations.

* Headless: Allow PNGs and http:// for screenshot.

* Headless: Disable http disk cache.

* Headless: Simplify executing a ppdmp via headless.

* Headless: Default to PNG for ppdmp tests.

* GPU: Fix safe size checks when rect offscreen.

* Vulkan: Prevent scaling shader leak.

No need to recreate if they haven't changed.

* Compat: Enable reinterpret for Kingdom Hearts.

See hrydgard#11223.  Should enable it for everything at some point.

* Debugger: Add API to trigger buttons.

* Debugger: Broadcast ctrl input events.

This can be useful to trigger debugging functionality on button press.

* Debugger: Include all press states for convenience.

In case of a multi-button shortcut, which might be common for debugging.

* Kernel: Adjust sceKernelGetThreadExitStatus timing.

See hrydgard#13703.

* PGF Fixed Bold & Italic property and camouflage the Font name.

* Oops! I misstook uploading jpn0.pgf.

* Resample all mp3

Fix hrydgard#5213

* Fix Russian (Cyrillic alphabet) on jpn0.pgf.

* Some marks position fixed on jpn0.pgf

* build fix

* PPGe: Scale down by worst of window/internal res.

See hrydgard#13958.

* compat.ini: Add Split/Second to [ReinterpretFramebuffers]. See hrydgard#13957

* Plugins: Enable by default.

* Resample only in 32000Hz

* Fix Greek characters & Roman numbers & all balance on jpn0.pgf

* Do PtpConnect internally during PtpOpen, since some games (ie. The Warriors) seems to do PtpSend immediately after PtpOpen without trying to PtpConnect first.

* Fix returned error code on PtpSend and PtpRecv when socket is not connected yet.

* OpenGL fragment shader gen: Fix precision inconsistency for v_color0/1.

Probably won't fix anything, just want this in for, well, consistency.

Noticed it debugging the iOS flat shading issues, but doesn't fix that.

* Fix duplicate shader version in the flat shader test

Unbreaks the flat shading test on Adreno (ended up in trying to link a
 #version 300 and a #version 320 shader together which it didn't like)

* Io: Don't allow async close while async busy.

See hrydgard#6582.

* GE: Better naming of render passes for color reinterpret

* GPU: Respect stencil write mask for 5551 buffers.

If the mask is 0x7F on 5551, that's equivalent to allowing the clear
entirely.  See hrydgard#13391.

* D3D9: Don't allow separate alpha clears.

Doesn't seem like the color mask applies to clears.

* Reporting: Expose CRC queue methods for other uses.

This way UI can expose the CRC if needed.

* Don't allow ForcedFirstConnect hack when using PtpConnect within PtpOpen to prevent returning result from blocking PtpConnect instead of result of PtpOpen.

* sceMp3Init:Add layerBits and versionBits information

* Add header information

* GLES: Remove direct khrplatform.h header include.

Shouldn't be needed anymore, was a hack for Nokia.  See hrydgard#13978.

* Mp3: Correct error handling for newer sdk versions.

The 6.xx behavior might be important if a game relies on it to add data.

* Mp3: Allow decode without pcm pointer.

Just like other audio decoding, you're allowed to skip audio.
Also prevents a crash if the mp3 is not yet inited.

* Add back XCode TARGETED_DEVICE_FAMILY config line

xcode warns that the value is deprecated or something, but maybe it still does something. Appears iPad support is broken right now.

* Mp3: Always keep sample rate from original mp3.

Our codec context is updated with the source sample rate, so this makes us
not resample at all.

Converting to stereo still seems correct.

* Updated GameMode initial data sync, in case remote players aren't listening yet when sending initial data (fix Pocket Pool)

* Mp3: Correct logging for init.

* Remove duplicates from ThreadManForKernel

* Vulkan: Add MMPX upscaling texture shader.

See https://casual-effects.com/research/McGuire2021PixelArt/index.html

* Vulkan: Allow tex shaders to specify a max scale.

* Specify MaxScale=2 for the new MMPX texture scaling shader

* Fix Greek characters ltn0~7.pgf

* gitlab ci change requested by m4xw

* FindFFmpeg: Fix a few issues

1. postproc now looks for postprocess.h (there is no postproc.h header).
2. pkg-config fallback condition now works (find_path/library set the
   variable to ${var}-NOTFOUND but it was checking for an empty string).

* (.gitlab-ci.yml) Add windows-x64 target

* Mpeg:Only allow firmware >= 3 for warmup

Fix hrydgard#13996

* Try to build fix on non-windows

* CMake: Add USE_UBSAN

* CMake: Rename USE_ADDRESS_SANITIZER to USE_ASAN

For consistency with USE_UBSAN

* CMake: Fix UBSAN link error

* Fix Russian characters ltn8~15.pgf

* Fix alignment issues in ISOFileSystem

Fixes hrydgard#14002

* jit: Make branch shift more obvious.

And also not technically undefined behavior.

* Fix connection issue on Dynasty Warriors (Shin Sangoku Musou) games when playing with more than 2 players.

* Minimize the Adreno shader compiler bug repro test

* Fix left shift of negative value in MIPSCodeUtils

Fixes a benign UBSAN error to improve the signal-to-noise ratio of
UBSAN errors.

Fixes hrydgard#14015

* x64Emitter: Fix unaligned store UBSAN errors

This compiles to the same assembly as before even without optimizations and avoids UB.

https://godbolt.org/z/4G5edM

While the UB here is benign, this improves signal-to-noise ratio of UBSAN errors.

Fixes hrydgard#14005

* Fix logging flags

1. The logging flags were being ignored (-v, -d)
2. Adds a `--loglevel` argument. Useful when using the debug build for
   ASAN/UBSAN to hide extremely noisy debug messages.

* Attempt to fix hrydgard#14022

* Fix Apple gpu detection

* Core: Correct branch analysis truncation.

* jit: Be very clear on sign extension.

* Only force the log level if it set via an argv

Follow-up to hrydgard#14019

* Io: Consistently use LE values of ISO entries.

Better to be consistent across big endian and little endian, in case
something was mastered wrong.

* Vulkan: Fix image layout issues after compute shader uploads.

We're already in GENERAL so probably not worth to transfer to DST just
to do even more transfers due to the silliness of GenerateMip.

I'm planning to rework the whole texture upload thing to be far more
optimal with some kind of TextureUploadManager

Fixes hrydgard#13987

* Mpeg:Only allow firmware >= 6 for warmup

Fix blue screen in hrydgard#13146

* Ge: Improve some logging and memchecks.

Explicitly trigger memchecks on readback.

* Ge: Restore saved context when ending a list.

Otherwise another list queued by a Head push could use the wrong context
data.  See hrydgard#13346.

* Framedump test screen. Downloads a list of framedumps.

* Add a new command in developer tools to list and load framedumps from framedump.ppsspp.org/repro/

Useful to make it easy to test GPU driver bugs etc, without having to
use real games or copying files around.

* Add checkbox to enable/disable driver bug workarounds.

* Fix minor rendering glitch in PPSSPP's menus on iOS

* Have the flat shading workaround obey the driver workarounds checkbox

* Loaders: Prevent errors on 0 byte reads.

Was happening when opening an http:// GE frame dump.

* Core: Maintain frame dump disc ID in SFO.

This way we won't generate a fake one later and use it for anything else.

* vertexjit: Correct saved registers on x64.

* Core: Assert debug stats remain positive.

* vertexjit: Only save extra regs on x64.

* Updated PdpStat and PtpStat

* Update README.md for 1.11

* Address initial feedback by iota97

* List fixed games. Thanks sum2012

* More from unknown and sum2012

* More stuff in README.md

* (.gitlab-ci.yml) Add linux-i686 and windows-i686 targets (+ prevent creation of 'null' file when building Windows libretro cores)

* Fix possible lock issue during AdhocMatchingStart

* Updated PdpStat to prevent rcv_sb_cc from exceeding the buffer size arg (since we use larger buffer size to prevent micro stutters or disconnection issue due to too many dropped packets with small buffer size).
TODO: May need to improve it to be able to calculate the correct size if there are multiple datagram messages

* UI: Correct developer tools test run.

* Make a couple of UI animations refresh rate independent

* Core: Reset state properly on CPU init failure.

* Windows: Prevent crash on null symbol map.

Happened during a double error scenario, but might as well check.

* We don't really need to allocate a buffer when using MSG_TRUNC on recvfrom

* Minor renaming

* Moving hleDelayResult from internal function of SetSocketAlert to prevent waking up HLE-blocked thread

* Fix possible race condition issue.

* Fix jpn0.pgf characters position.

* Debugger: Populate funcs if disassembly open early.

* PPGe: Fallback to atlas text on alloc fail.

* PPGe: Clear text allocations on shutdown.

* Updated some Logs to help finding the location of the call to debug.

* Removing hleDelayResult from internal adhoc functions to prevent waking up thread that supposed to be blocked by the outer HLE.

* Run the link script

* Run the link script, fixups

* Update lang,pspautotests submodules

* Do the title screen animation by accumulator instead, to avoid a long first frame breaking it.

* Update version to 1.11

* PPGe: Decimate text images properly.

* Add more games to ReportSmallMemStick

* Handle exec addr errors better - don't let IgnoreBadMemoryAccesses skip dispatcher exceptions.

It would then just fall through into the compiler and die.

Should remove one of the "mystery" crashes from hrydgard#14082.

* Cause the correct type of exception. Never ignore EXEC_ADDR exceptions.

* Buildfix

* GL: Call CreateDeviceObjects *after* updating render_.

Also remove a redundant call to fetch render_ in the constructor, it's
already passed in.

* Remove now-redundant check

* Only allow sceMpegGetAvcAu warmup for God Eater Series

Fix hrydgard#14086

* Rename the new warmup variable from hrydgard#14091

* SaveState: Prevent crash on bad cookie marker.

Just fail to load the save state.

* Update lang submodule (it_IT updates)

* Remove a completely unnecessary check in BackgroundAudio.cpp that caused glitching at 44.1khz.

Fixes hrydgard#14096

* Assorted paranoid cleanups, inspired by hrydgard#14082

* Fix frozen (0 FPS) issue on Kao Challengers and Asterix & Obelix XX (probably also fix other games from the same developer with similar issue) hrydgard#14103

* Windows recvfrom doesn't support MSG_TRUNC, so we're using dummy buffer with max size as alternative for peeking actual size of the next pending message.

* Update zh_CN and zh_TW

* Fix lobby issue on The Warriors, probably also fix similar issue on other games too.

* Update README.md for 1.11.1

* Slight simplification in LogoScreen

Not that I think those crashes actually are from this...

* Update version to 1.11.1

* Some GLSL compilers are very particular about the sign of shift operands..

* Revert (partially) "compat.ini: Add Split/Second to [ReinterpretFramebuffers]. See hrydgard#13957"

Also see hrydgard#14123 . Not sure I intended to actually do this.

This reverts commit d0c3a5a.

* GPU: Force reinterpret off without copy image.

Also, assert we have it when using it, since there's ifs.

* Add some checks trying to prevent creation of 0 sized textures.

Saw a crash log with a driver crash in CreateTexture...

* Update lang submodule

* Io: Truncate reads/writes to valid memory.

A PSP might crash in these cases, but it's better if we avoid a crash.

* Don't assert on invalid format in CwCheat.

Not sure exactly what we should do, though..

* Build: Allow on actions test branch.

* Build: Cache Qt during Actions run.

* Android: Ensure shutdown waits for render.

We apparently have a case where render is busy during shutdown, based on
crash reports.

Co-authored-by: Henrik Rydgård <[email protected]>
Co-authored-by: Unknown W. Brackets <[email protected]>
Co-authored-by: nassau-tk <[email protected]>
Co-authored-by: sum2012 <[email protected]>
Co-authored-by: ANR2ME <[email protected]>
Co-authored-by: AdamN <[email protected]>
Co-authored-by: Florin9doi <[email protected]>
Co-authored-by: Gleb Mazovetskiy <[email protected]>
Co-authored-by: jdgleaver <[email protected]>
Co-authored-by: Anuskuss <[email protected]>
@hrydgard
Copy link
Owner Author

one that's not new, but haven't noticed before:


  #00  pc 0000000000008a14  /system/lib64/liblog.so (__android_log_assert+328)
  #00  pc 000000000065c33c  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+248)
  #00  pc 00000000005625f4  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (Vulkan2D::GetDescriptorSet(VkImageView_T*, VkSampler_T*, VkImageView_T*, VkSampler_T*)+328)
  #00  pc 0000000000553b9c  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerVulkan::DrawActiveTexture(float, float, float, float, float, float, float, float, float, float, int, int)+624)
  #00  pc 000000000056e3a8  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerCommon::DrawPixels(VirtualFramebuffer*, int, int, unsigned char const*, GEBufferFormat, int, int, int)+664)
  #00  pc 000000000056deb8  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (FramebufferManagerCommon::UpdateFromMemory(unsigned int, int, bool)+520)
  #00  pc 0000000000488c5c  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000)
  #00  pc 000000000040b4b8  /data/app/org.ppsspp.ppsspp-m4lb6uwksI7g346Z8OKCzQ==/split_config.arm64_v8a.apk!lib/arm64-v8a/libppsspp_jni.so (offset 0x1000) (CallSyscallWithoutFlags(HLEFunction const*)+28)
  #00  pc 0000000000425278  <anonymous>

@unknownbrackets
Copy link
Collaborator

Maybe vkAllocateDescriptorSets returned out of memory?

-[Unknown]

@hrydgard
Copy link
Owner Author

That's the only assert in the function, but it's odd. The descriptor pool has space for 3000 entries and we reset it per frame. No way we're doing 3000 depals or post shaders in a frame

@hrydgard
Copy link
Owner Author

This one pretty much has to be memory corruption, right?

#00  pc 00000000004e55c5  /data/app/org.ppsspp.ppsspp-2/lib/arm/libppsspp_jni.so (HandleAssert(char const*, char const*, int, char const*, char const*, ...)+116)
  #00  pc 00000000002bae1d  /data/app/org.ppsspp.ppsspp-2/lib/arm/libppsspp_jni.so (CWCheatEngine::Run()+208)
  #00  pc 00000000002ba687  /data/app/org.ppsspp.ppsspp-2/lib/arm/libppsspp_jni.so (hleCheat(unsigned long long, int)+578)
  #00  pc 00000000002b87fd  /data/app/org.ppsspp.ppsspp-2/lib/arm/libppsspp_jni.so (CoreTiming::Advance()+180)
  #00  pc 0000000000363a37  /data/app/org.ppsspp.ppsspp-2/lib/arm/libppsspp_jni.so (__KernelReSchedule(char const*)+26)
  #00  pc 0000000000001b88  <anonymous>

the only assert there is in the default case of ExecuteOp ...

@unknownbrackets
Copy link
Collaborator

Probably related to the other cheat assert, yeah.

-[Unknown]

@unknownbrackets
Copy link
Collaborator

I think the ValidSize bug not working may have caused some of these. With that fixed, should we close this until next time?

-[Unknown]

@unknownbrackets
Copy link
Collaborator

Going to close this now given it's been quite some commits since v1.11.x, I'm sure we'll have new ones to look at for v1.12. I'm optimistic that several of these may be fixed for next time around now.

-[Unknown]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants