Closed Andrew9x closed 6 years ago
Are there any messages logged? If it's crashing, are you able to get a gdb backtrace of the crash?
If you quit the game without exiting PPSSPP, are you still able to start the game a second time until you exit PPSSPP?
If you don't change any settings, and you just reload like that, does it still happen?
-[Unknown]
For your first suggestion, you'll have to guide me a bit as I don't know where is the log file located / or where can I get the backtrace.
As you will see in the video: no, that doesnt help.
If I don't touch the settings, then I dont have to go through the trouble of deleting ppsspp.ini. So at least the app always starts. However I noticed that the recent games list are now empty.
Here is the video: https://www.youtube.com/watch?v=jdP9oE42SYg&feature=youtu.be
I don't think its related to a specific game, but the app crashes for Final Fantasy Type 0, Lord of Arcana, and Jak & Daxter.
I'm not able to load that video.
For getting a backtrace, you'd first need gdb, installed via package manager: http://www.gdbtutorial.com/tutorial/how-install-gdb
Next, you'll ideally want to compile PPSSPP yourself (this is easy, even if you're using a ppa or something right now.) That's done like this:
sudo apt-get install git cmake build-essential libsdl2-dev libgl1-mesa-dev libglu1-mesa-dev
git clone --recurse-submodules https://github.com/hrydgard/ppsspp.git
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Debug ..
make
gdb ./PPSSPPSDL
At this point you should see a line like this:
(gdb)
You can exit any time by typing "quit". But to continue, type "run". Then just reproduce the issue.
At some point, when it crashes, you should see that (gdb)
prompt again in the terminal window. Once it does, type bt
or backtrace
. Then paste the output of that here.
It will log messages within the terminal window as well, above the (gdb)
line when it crashes.
-[Unknown]
The video should work now.
Warnings during build: (each refers to the same -Wno-deprecated-register, whatever that is)
---
`[ 15%] Building CXX object CMakeFiles/native.dir/ext/native/file/file_util.cpp.o
/home/janos/ppsspp/ext/native/file/file_util.cpp: In function ‘size_t getFilesInDir(const char*, std::vector
--- `[ 65%] Building CXX object CMakeFiles/Core.dir/Core/FileSystems/DirectoryFileSystem.cpp.o /home/janos/ppsspp/Core/FileSystems/DirectoryFileSystem.cpp: In function ‘bool FixFilenameCase(const string&, std::__cxx11::string&)’: /home/janos/ppsspp/Core/FileSystems/DirectoryFileSystem.cpp:80:51: warning: ‘int readdir_r(DIR*, dirent*, dirent**)’ is deprecated [-Wdeprecated-declarations] while (!readdir_r(dirp, (dirent*) &diren, &result) && result) ^ In file included from /usr/include/features.h:424:0, from /usr/include/x86_64-linux-gnu/c++/7/bits/os_defines.h:39, from /usr/include/x86_64-linux-gnu/c++/7/bits/c++config.h:533, from /usr/include/c++/7/utility:68, from /usr/include/c++/7/algorithm:60, from /home/janos/ppsspp/Core/FileSystems/DirectoryFileSystem.cpp:20: /usr/include/dirent.h:189:12: note: declared here extern int __REDIRECT (readdir_r, ^ At global scope: cc1plus: warning: unrecognized command line option ‘-Wno-deprecated-register’ ` `[ 88%] Building CXX object CMakeFiles/Core.dir/GPU/Common/GPUStateUtils.cpp.o /home/janos/ppsspp/GPU/Common/GPUStateUtils.cpp: In function ‘bool NeedsTestDiscard()’: /home/janos/ppsspp/GPU/Common/GPUStateUtils.cpp:51:82: warning: comparison between ‘enum GEBlendSrcFactor’ and ‘enum GEBlendDstFactor’ [-Wenum-compare] etBlendFuncA() != GE_SRCBLEND_SRCALPHA && gstate.getBlendFuncA() != GE_DSTBLEND_DOUBLESRCALPHA) ^~~~~~~~~~~~~~~~~~~~~~~~~~ At global scope: cc1plus: warning: unrecognized command line option ‘-Wno-deprecated-register’` `[ 88%] Building CXX object CMakeFiles/Core.dir/GPU/Common/ShaderTranslation.cpp.o /home/janos/ppsspp/GPU/Common/ShaderTranslation.cpp: In function ‘bool TranslateShader(std::__cxx11::string*, ShaderLanguage, TranslatedShaderMetadata*, std::__cxx11::string, ShaderLanguage, Draw::ShaderStage, std::__cxx11::string*)’: /home/janos/ppsspp/GPU/Common/ShaderTranslation.cpp:313:27: warning: ‘void spirv_cross::CompilerGLSL::set_options(spirv_cross::CompilerGLSL::Options&)’ is deprecated [-Wdeprecated-declarations] glsl.set_options(options); ^ In file included from /home/janos/ppsspp/GPU/Common/ShaderTranslation.cpp:40:0: /home/janos/ppsspp/ext/SPIRV-Cross/spirv_glsl.hpp:159:7: note: declared here void set_options(Options &opts) ^~~~~~~~~~~ /home/janos/ppsspp/GPU/Common/ShaderTranslation.cpp:327:27: warning: ‘void spirv_cross::CompilerGLSL::set_options(spirv_cross::CompilerGLSL::Options&)’ is deprecated [-Wdeprecated-declarations] glsl.set_options(options); ^ In file included from /home/janos/ppsspp/GPU/Common/ShaderTranslation.cpp:40:0: /home/janos/ppsspp/ext/SPIRV-Cross/spirv_glsl.hpp:159:7: note: declared here void set_options(Options &opts) ^~~~~~~~~~~ At global scope: cc1plus: warning: unrecognized command line option ‘-Wno-deprecated-register’` ---
--- ``` [ 93%] Building CXX object CMakeFiles/PPSSPPSDL.dir/UI/DiscordIntegration.cpp.o In file included from /home/janos/ppsspp/UI/DiscordIntegration.cpp:5:0: /home/janos/ppsspp/UI/DiscordIntegration.cpp: In function ‘void handleDiscordError(int, const char*)’: /home/janos/ppsspp/Common/Log.h:104:51: warning: format ‘%d’ expects argument of type ‘int’, but argument 6 has type ‘const char*’ [-Wformat=] GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \ ^ /home/janos/ppsspp/Common/Log.h:107:33: note: in expansion of macro ‘GENERIC_LOG’ #define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (false) ^~~~~~~~~~~ /home/janos/ppsspp/UI/DiscordIntegration.cpp:32:2: note: in expansion of macro ‘ERROR_LOG’ ERROR_LOG(SYSTEM, "Discord error code %d: '%s'", message); ^~~~~~~~~ /home/janos/ppsspp/Common/Log.h:104:51: warning: format ‘%s’ expects a matching ‘char*’ argument [-Wformat=] GenericLog(v, t, __FILE__, __LINE__, __VA_ARGS__); \ ^ /home/janos/ppsspp/Common/Log.h:107:33: note: in expansion of macro ‘GENERIC_LOG’ #define ERROR_LOG(t,...) do { GENERIC_LOG(LogTypes::t, LogTypes::LERROR, __VA_ARGS__) } while (false) ^~~~~~~~~~~ /home/janos/ppsspp/UI/DiscordIntegration.cpp:32:2: note: in expansion of macro ‘ERROR_LOG’ ERROR_LOG(SYSTEM, "Discord error code %d: '%s'", message); ^~~~~~~~~ At global scope: cc1plus: warning: unrecognized command line option ‘-Wno-deprecated-register’ ``` ---
---
```
gdb ./PPSSPPSDL
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later
Okay, so it definitely did segfault. Were you able to run bt
to get a backtrace?
The module it loaded was PSP_MODULE_AV_AVCODEC, which might be it preparing to play a video or music. This could mean it's actually an FFmpeg issue.
-[Unknown]
Ops, I forgot to do that. Here you go:
Thread 1 "PPSSPPSDL" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) bt
#0 0x0000000000000000 in ?? ()
#1 0x0000555555bbae23 in GLQueueRunner::InitCreateFramebuffer (
this=0x555556ff51c8, step=...)
at /home/janos/ppsspp/ext/native/thin3d/GLQueueRunner.cpp:349
#2 0x0000555555bba913 in GLQueueRunner::RunInitSteps (this=0x555556ff51c8,
steps=std::vector of length 13, capacity 16 = {...})
at /home/janos/ppsspp/ext/native/thin3d/GLQueueRunner.cpp:258
#3 0x0000555555bb10a0 in GLRenderManager::Run (this=0x555556ff4a00, frame=1)
at /home/janos/ppsspp/ext/native/thin3d/GLRenderManager.cpp:483
#4 0x0000555555baff8a in GLRenderManager::ThreadFrame (this=0x555556ff4a00)
at /home/janos/ppsspp/ext/native/thin3d/GLRenderManager.cpp:171
#5 0x0000555555b6db6c in SDLGLGraphicsContext::ThreadFrame (
this=0x555556eb2990) at /home/janos/ppsspp/SDL/SDLGLGraphicsContext.h:39
#6 0x0000555555b6a4e2 in main (argc=1, argv=0x7fffffffdef8)
at /home/janos/ppsspp/SDL/SDLMain.cpp:772
(gdb)
That's a rather odd place for it to die... Maybe some GL framebuffer extension is misbehaving. What GPU do you have and what Linux driver are you using for it?
I've got a dedicated Geforce 940M, but for power saving reasons I always use the integrated Intel HD 520.
lshw info:
*-display
description: VGA compatible controller
product: HD Graphics 520
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 07
width: 64 bits
clock: 33MHz
capabilities: pciexpress msi pm vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:131 memory:92000000-92ffffff memory:a0000000-afffffff ioport:5000(size=64) memory:c0000-dffff
*-display
description: 3D controller
product: GM108M [GeForce 940M]
vendor: NVIDIA Corporation
physical id: 0
bus info: pci@0000:01:00.0
version: a2
width: 64 bits
clock: 33MHz
capabilities: pm msi pciexpress bus_master cap_list
configuration: driver=nouveau latency=0
resources: irq:130 memory:93000000-93ffffff memory:80000000-8fffffff memory:90000000-91ffffff ioport:4000(size=128)
To recap what we know: Once I exit ppsspp, I have to delete the ppsspp.ini, otherwise I can't start it again. (even if I don't mess with the settings) The recent games list is empty (guess it gets its info from the ini file)
Side note, "gdb run", doesn't let me start the game, not even once.
Crashes on my dad's pc too, which has the linux mint too, with kernel 4.15.0.33.
Does it matter if you use Vulkan or OpenGL as the backend?
-[Unknown]
I don't have an option to select Vulkan. Not sure if I am supposed to..
The latest git build gives realpath a more generous buffer for realpath, much more than the posix docs say, is it any better?
To confirm - v1.6.3 doesn't crash like this, does it?
-[Unknown]
I just checked v1.6.3-358-g17de6ad, before work. It started without any problem, loaded my graphic settings, the recent games list was there. I could start it as many times as I wanted, with no issue :D (exiting and restarting works too)
I think it's safe to say it's solved, but I'll double check when I get home.
Oh, this is probably just 404594d then, and the log was on the wrong thread. Good to hear it's fixed.
-[Unknown]
What happens?
On the first run, I browse the iso, and start it and play it, exit the application. At a later time when I choose to play again and click on the picture of the iso in the game selection screen, the application exits, without any error. If I try to start PPSSPP after that, then nothing happens.
I managed to fix this issue, by going to home/.config/ppsspp/PSP/SYSTEM/ and deleting ppsspp.ini there. When doing so I can start PPSSPP without any problem, the game runs normally, but then the cycle restarts again. On the second run it will always crash, and I have to remove the ini file again.
My guess is that the PPSSPP somehow can create the ini file, but cant modify it? Like the graphic settings I change (resolution to 4X, FXAA) or the app cant increment the count of runs.
Operating system and PPSSPP version?
Linux Mint 19 PPSSPP v1.6.3-347-g0684068