hrydgard / ppsspp

A PSP emulator for Android, Windows, Mac and Linux, written in C++. Want to contribute? Join us on Discord at https://discord.gg/5NJB6dD or just send pull requests / issues. For discussion use the forums at forums.ppsspp.org.
https://www.ppsspp.org
Other
10.96k stars 2.14k forks source link

God Eater 2 version 1.4 - The game freeze if you bring NPC(s) to a mission #7446

Open KenGodEaterwiki opened 9 years ago

KenGodEaterwiki commented 9 years ago

This problem have been existed for a long time (I think). I did turn off the Fast Mem option and it's still the same. http://forums.ppsspp.org/showthread.php?tid=7350&pid=100350#pid100350 This might help a little bit more.

I'm asking this because God Eater 2 Rage Burst demo have come out and people that don't have PSV/PS4 are left behind...

KenGodEaterwiki commented 9 years ago

...........

KenGodEaterwiki commented 9 years ago

Alright then...

hrydgard commented 9 years ago

You might have more luck getting someone to look at it by posting more actionable information, like, where to get the demo, how to install the upgrade, on what platforms it is a problem (all?), a savegame before the problem, etc.

KenGodEaterwiki commented 9 years ago

It happen on all platforms. This problem does not happen in the demo

Alright, I'll try explain things better. Go to Hibari, accept a mission, lunch the mission, when the loading is finish, the game freeze

viktorhunter commented 8 years ago

This is a already known issue and seems to happen because the memory allocation feature...

http://forums.ppsspp.org/showthread.php?tid=7350&pid=102863&highlight=unknown#pid102863

Anyway i will just post my log from the tutorial mission with the npc on my group, and its interesting that the blackscreen only happens after the monsters spawns.

Log : http://pastebin.com/f1jq6vjX

*Note: Update 1.40 added a new feature to npcs were you can leveling them . Plus now you can change mission difficulty from 1-99. Seems that the interaction between these two new features break the game when trying to bring npc to the missions on the ppsspp. Anyway you can play the entire game without npc's whithout a single error or crash.

PPSSPP v1.0.1-832-ge99ba86 x64 Version Windows 10 Pro

Saramagrean commented 4 years ago

It crash without NPCs too. test with PPSSPP v1.9.3-960-gb23f94993.

Logcat from Android. ge2_logcat.zip

Log from Windows (use PPSSPP Debug build). https://drive.google.com/open?id=1Ou59Rtjsy7WtSHMcHnELq37CKZrsByaz

nassau-tk commented 3 years ago

This issue still happen on v1.10.3-1565.

PPSSPP Ver.:1.10.3-1565 OS:Windows10(64-bit)Japanese CPU:Ryzen7 3800X(8-core) GPU:RADEON RX5700XT Resolution:2560×1440 RAM:32GB

I got a Log. (GE2 v1.40. It will happen Invalid memory access error at start the any mission.) https://gist.github.com/nassau-tk/29ccd1de638f3730b0b9e83f735aad56 image

I got a Log.(GE2 v1.01. It will not happen Invalid memory access error.) https://gist.github.com/nassau-tk/97becd397d43859ac2ad02192c94d8ba

But,Many Red code appear both Version.

nassau-tk commented 3 years ago

Probably, related or duplicate with #8075 ?

anr2me commented 3 years ago

Based on your logs: https://gist.github.com/nassau-tk/29ccd1de638f3730b0b9e83f735aad56

May be it's related to the missing EDAT file?

38:21:695 Back         I[HLE]: hle\scepspnpdrm_user.cpp:9 call sceNpDrmSetLicenseeKey(08af8b28)
38:21:695 Back         I[HLE]: hle\scepspnpdrm_user.cpp:21 call sceNpDrmRenameCheck(ms0:/PSP/GAME/NPJH50832/f3594808fb6a0f2123811d0d26b0af74.edat)
38:21:695 Back         E[FILESYS]: filesystems\directoryfilesystem.cpp:62 DirectoryFileSystem::OpenFile: FAILED, 2 - access = 1
38:21:695 Back         W[SCEIO]: hle\sceio.cpp:1499 80010002=sceIoOpen(ms0:/PSP/GAME/NPJH50832/f3594808fb6a0f2123811d0d26b0af74.edat, 1073741825, 0): file not found
38:21:695 Back         I[SCEIO]: hle\sceio.cpp:1143 stdout: !!! Error !!! : src/app_mod/npdrm.c 122 : openEdat : ms0:/PSP/GAME/NPJH50832/f3594808fb6a0f2123811d0d26b0af74.edat:80010002

I also wondered why it failed to allocate 8192 bytes of memory, that's quite a small size. 38:27:436 Back E[SCEKERNEL]: util\blockallocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 8192 (00002000) bytes of contiguous memory May be something is draining up all PSP's memory without freeing it?

Edit: If i put breakpint at blockallocator.cpp:141, the first "Out of memory" occurrence during AllocAligned(0x00100000, 0x00000100, 0x00000100, false, "mem") is during SysMemUserForUser_FE707FDF with currentMIPS->pc = 0x0882b178 and hleCurrentThreadName = "Back"

rangeStart_ = 0x08800000
rangeSize_ = 0x01800000

this->bottom_  = {start=0x08800000, size=0x00004000, taken=true, tag ="usersystemlib", prev = 0, ... }
37:00:301 Back         E[SCEIO]: HLE\sceIo.cpp:2405 Not a valid PGD file. Open as normal file.
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:394 -----------
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled)
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library
37:26:106 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bd2800 size 00020000 taken=1 tag=netpool
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd2800 - 08bd4800 size 00002000 taken=1 tag=stack/NetConnManager
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd4800 - 08bd7800 size 00003000 taken=1 tag=stack/MovieAudio
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd7800 - 08bd8000 size 00000800 taken=1 tag=ELF/system
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd8000 - 08bd9a00 size 00001a00 taken=1 tag=ELF/god_menu
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd9a00 - 08bda700 size 00000d00 taken=1 tag=ELF/god_game
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bda700 - 08cda700 size 00100000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08cda700 - 08dda700 size 00100000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08dda700 - 08ea1400 size 000c6d00 taken=1 tag=ELF/god_g999_Base
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ea1400 - 08fbb800 size 0011a400 taken=1 tag=ELF/layout
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08fbb800 - 09089800 size 000ce000 taken=1 tag=extra
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09089800 - 09189800 size 00100000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09189800 - 09289800 size 00100000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09289800 - 09389800 size 00100000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09389800 - 0943a400 size 000b0c00 taken=0 tag=(untitled)
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0943a400 - 0947a400 size 00040000 taken=1 tag=reserve
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947a400 - 0947c000 size 00001c00 taken=1 tag=stack/AdhocThread
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947c000 - 0947d000 size 00001000 taken=1 tag=netstack2
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947d000 - 0947e000 size 00001000 taken=1 tag=netstack1
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv
37:26:107 Back         D[SCEKERNEL]: Util\BlockAllocator.cpp:400 -----------
37:26:108 Back         E[SCEKERNEL]: Util\BlockAllocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 1048576 (00100000) bytes of contiguous memory
37:26:108 Back         E[SCEKERNEL]: HLE\sceKernelMemory.cpp:1811 AllocMemoryBlock(mem, 0, 00100000, 00000000): allocation failed

So many "mem" tag O.o

PS: Tested to return error code during allocation of "mem" doesn't seems to have any effect to the game (assuming it's some kind of tricks to prevent it from running properly on emulators) and still getting invalid address when entering mission door.

anr2me commented 3 years ago

During Loading scene (The one with running wolf on bottom right corner) the game will free these "mem" blocks (especially the one with 0x00100000 size) and then allocate a new one, along with ELF blocks.

This is memory block list before 6x "mem" of size 0x00100000 (located after ELF/layout) are being freed.

Logs ``` 29:36:045 Main W[SCEKERNEL]: HLE\sceKernelMemory.cpp:1827 FreeMemoryBlock(000001c1) = 09248400, mem 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 29:36:045 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bd2800 size 00020000 taken=1 tag=netpool 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd2800 - 08bd4800 size 00002000 taken=1 tag=stack/NetConnManager 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd4800 - 08bd7800 size 00003000 taken=1 tag=stack/MovieAudio 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd7800 - 08bd8000 size 00000800 taken=1 tag=ELF/system 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd8000 - 08bd9a00 size 00001a00 taken=1 tag=ELF/god_menu 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd9a00 - 08c2e000 size 00054600 taken=1 tag=ELF/god_m001_Title 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08c2e000 - 08d48400 size 0011a400 taken=1 tag=ELF/layout 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08d48400 - 08e48400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08e48400 - 08f48400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08f48400 - 09048400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09048400 - 09148400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09148400 - 09248400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09248400 - 09348400 size 00100000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09348400 - 0947a400 size 00132000 taken=0 tag=(untitled) 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947a400 - 0947c000 size 00001c00 taken=1 tag=stack/AdhocThread 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947c000 - 0947d000 size 00001000 taken=1 tag=netstack2 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947d000 - 0947e000 size 00001000 taken=1 tag=netstack1 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- 29:36:046 Main W[SCEKERNEL]: HLE\sceKernelMemory.cpp:1827 FreeMemoryBlock(000001be) = 09148400, mem 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 29:36:046 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib ```

This is after 6x "mem" freed

Logs ``` 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bd2800 size 00020000 taken=1 tag=netpool 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd2800 - 08bd4800 size 00002000 taken=1 tag=stack/NetConnManager 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd4800 - 08bd7800 size 00003000 taken=1 tag=stack/MovieAudio 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd7800 - 08bd8000 size 00000800 taken=1 tag=ELF/system 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd8000 - 08bd9a00 size 00001a00 taken=1 tag=ELF/god_menu 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd9a00 - 08c2e000 size 00054600 taken=1 tag=ELF/god_m001_Title 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08c2e000 - 08d48400 size 0011a400 taken=1 tag=ELF/layout 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08d48400 - 0947a400 size 00732000 taken=0 tag=mem 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947a400 - 0947c000 size 00001c00 taken=1 tag=stack/AdhocThread 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947c000 - 0947d000 size 00001000 taken=1 tag=netstack2 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947d000 - 0947e000 size 00001000 taken=1 tag=netstack1 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 29:36:051 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 29:36:052 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 29:36:052 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 29:36:052 Main W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- ```

This is when the game try to allocate 6x (or more) "mem" of size 0x00100000 each, but failed on the 6th one due to not enough contiguous free memory

Logs ``` 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bd2800 size 00020000 taken=1 tag=netpool 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd2800 - 08bd4800 size 00002000 taken=1 tag=stack/NetConnManager 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd4800 - 08bd7800 size 00003000 taken=1 tag=stack/MovieAudio 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd7800 - 08bd8000 size 00000800 taken=1 tag=ELF/system 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd8000 - 08bd9a00 size 00001a00 taken=1 tag=ELF/god_menu 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bd9a00 - 08bda700 size 00000d00 taken=1 tag=ELF/god_game 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bda700 - 08cda700 size 00100000 taken=1 tag=mem 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08cda700 - 08dda700 size 00100000 taken=1 tag=mem 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08dda700 - 08ea1400 size 000c6d00 taken=1 tag=ELF/god_g999_Base 29:44:136 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ea1400 - 08fbb800 size 0011a400 taken=1 tag=ELF/layout 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08fbb800 - 09089800 size 000ce000 taken=1 tag=extra 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09089800 - 09189800 size 00100000 taken=1 tag=mem 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09189800 - 09289800 size 00100000 taken=1 tag=mem 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09289800 - 09389800 size 00100000 taken=1 tag=mem 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09389800 - 0943a400 size 000b0c00 taken=0 tag=(untitled) 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0943a400 - 0947a400 size 00040000 taken=1 tag=reserve 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947a400 - 0947c000 size 00001c00 taken=1 tag=stack/AdhocThread 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947c000 - 0947d000 size 00001000 taken=1 tag=netstack2 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947d000 - 0947e000 size 00001000 taken=1 tag=netstack1 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 29:44:137 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- 29:44:137 Back E[SCEKERNEL]: Util\BlockAllocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 1048576 (00100000) bytes of contiguous memory 39:54:890 Back E[SCEKERNEL]: HLE\sceKernelMemory.cpp:1811 AllocMemoryBlock(mem, 0, 00100000, 00000000): allocation failed ```

I think this 6th "mem" supposed to be allocated at 09389800

May be we should allocate from Top for internal memory used for system/firmware library? to prevent it from scattered and causing fragmentation Or may be using kernelMemory instead?

Edit: That "netpool" seems to be from Bottom :(

After moving "netpool" to Top, the 6th "mem" allocation is still not enough for a contiguous block :(

Logs ``` 22:12:236 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 22:12:236 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 22:12:236 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 22:12:236 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 22:12:236 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bb4800 size 00002000 taken=1 tag=stack/NetConnManager 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb4800 - 08bb7800 size 00003000 taken=1 tag=stack/MovieAudio 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb7800 - 08bb8000 size 00000800 taken=1 tag=ELF/system 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb8000 - 08bb9a00 size 00001a00 taken=1 tag=ELF/god_menu 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb9a00 - 08bba700 size 00000d00 taken=1 tag=ELF/god_game 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bba700 - 08cba700 size 00100000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08cba700 - 08dba700 size 00100000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08dba700 - 08e81400 size 000c6d00 taken=1 tag=ELF/god_g999_Base 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08e81400 - 08f9b800 size 0011a400 taken=1 tag=ELF/layout 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08f9b800 - 09069800 size 000ce000 taken=1 tag=extra 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09069800 - 09169800 size 00100000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09169800 - 09269800 size 00100000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09269800 - 09369800 size 00100000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09369800 - 0941a400 size 000b0c00 taken=0 tag=(untitled) 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0941a400 - 0945a400 size 00040000 taken=1 tag=reserve 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0945a400 - 0945c000 size 00001c00 taken=1 tag=stack/AdhocThread 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0945c000 - 0947c000 size 00020000 taken=1 tag=netpool 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947c000 - 0947d000 size 00001000 taken=1 tag=netstack2 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947d000 - 0947e000 size 00001000 taken=1 tag=netstack1 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 22:12:237 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- 22:12:238 Back E[SCEKERNEL]: Util\BlockAllocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 1048576 (00100000) bytes of contiguous memory 22:20:900 Back E[SCEKERNEL]: HLE\sceKernelMemory.cpp:1811 AllocMemoryBlock(mem, 0, 00100000, 00000000): allocation failed ```

Anything else that can be moved to Top?

Edit2: Even after moving network-related memory blocks to kernelMemory, it's still not enough space for contiguous blocks on 6th "mem" :(

Logs ``` 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 56:26:004 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71000 size 00008000 taken=1 tag=UtilityModule/302 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71000 - 08b85000 size 00014000 taken=1 tag=UtilityModule/100 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b85000 - 08ba5000 size 00020000 taken=1 tag=UtilityModule/101 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08ba5000 - 08bad300 size 00008300 taken=1 tag=ELF/sceFont_Library 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bad300 - 08bae800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bae800 - 08baf800 size 00001000 taken=1 tag=ELF/sceCcc_Library 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08baf800 - 08bb2800 size 00003000 taken=1 tag=stack/Sound 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb2800 - 08bb4800 size 00002000 taken=1 tag=stack/NetConnManager 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb4800 - 08bb7800 size 00003000 taken=1 tag=stack/MovieAudio 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb7800 - 08bb8000 size 00000800 taken=1 tag=ELF/system 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb8000 - 08bb9a00 size 00001a00 taken=1 tag=ELF/god_menu 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bb9a00 - 08bba700 size 00000d00 taken=1 tag=ELF/god_game 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08bba700 - 08cba700 size 00100000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08cba700 - 08dba700 size 00100000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08dba700 - 08e81400 size 000c6d00 taken=1 tag=ELF/god_g999_Base 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08e81400 - 08f9b800 size 0011a400 taken=1 tag=ELF/layout 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08f9b800 - 09069800 size 000ce000 taken=1 tag=extra 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09069800 - 09169800 size 00100000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09169800 - 09269800 size 00100000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09269800 - 09369800 size 00100000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09369800 - 0943e000 size 000d4800 taken=0 tag=(untitled) 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0943e000 - 0947e000 size 00040000 taken=1 tag=reserve 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 56:26:005 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- 56:26:005 Back E[SCEKERNEL]: Util\BlockAllocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 1048576 (00100000) bytes of contiguous memory 56:44:614 Back E[SCEKERNEL]: HLE\sceKernelMemory.cpp:1811 AllocMemoryBlock(mem, 0, 00100000, 00000000): allocation failed ```

Edit3: Even after moving Utility memory blocks to kernelMemory, the 7th "mem" allocation of size 0x00100000 failed :( I wondered why is this game allocating so many "mem" with large size during Loading scene.

Logs ``` 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:394 ----------- 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08800000 - 08804000 size 00004000 taken=1 tag=usersystemlib 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08804000 - 08b56300 size 00352300 taken=1 tag=ELF/main 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56300 - 08b56400 size 00000100 taken=1 tag=mem 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56400 - 08b56c00 size 00000800 taken=1 tag=ELF/sceMD5_Library 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56c00 - 08b56d00 size 00000100 taken=1 tag=gim 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56d00 - 08b56e00 size 00000100 taken=1 tag=gmo 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b56e00 - 08b57000 size 00000200 taken=0 tag=(untitled) 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b57000 - 08b5b000 size 00004000 taken=1 tag=UserSbrk 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b5b000 - 08b63000 size 00008000 taken=1 tag=stack/Main 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b63000 - 08b66000 size 00003000 taken=1 tag=stack/Back 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b66000 - 08b69000 size 00003000 taken=1 tag=stack/PowerLocker 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b69000 - 08b71300 size 00008300 taken=1 tag=ELF/sceFont_Library 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b71300 - 08b72800 size 00001500 taken=1 tag=ELF/sceDEFLATE_Library 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b72800 - 08b73800 size 00001000 taken=1 tag=ELF/sceCcc_Library 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b73800 - 08b76800 size 00003000 taken=1 tag=stack/Sound 20:39:496 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b76800 - 08b78800 size 00002000 taken=1 tag=stack/NetConnManager 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b78800 - 08b7b800 size 00003000 taken=1 tag=stack/MovieAudio 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b7b800 - 08b7c000 size 00000800 taken=1 tag=ELF/system 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b7c000 - 08b7da00 size 00001a00 taken=1 tag=ELF/god_menu 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b7da00 - 08b7e700 size 00000d00 taken=1 tag=ELF/god_game 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08b7e700 - 08c7e700 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08c7e700 - 08d7e700 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08d7e700 - 08e45400 size 000c6d00 taken=1 tag=ELF/god_g999_Base 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08e45400 - 08f5f800 size 0011a400 taken=1 tag=ELF/layout 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 08f5f800 - 0902d800 size 000ce000 taken=1 tag=extra 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0902d800 - 0912d800 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0912d800 - 0922d800 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0922d800 - 0932d800 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0932d800 - 0942d800 size 00100000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0942d800 - 0943e000 size 00010800 taken=0 tag=(untitled) 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0943e000 - 0947e000 size 00040000 taken=1 tag=reserve 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947e000 - 0947f000 size 00001000 taken=1 tag=Log 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 0947f000 - 096ff000 size 00280000 taken=1 tag=xmem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 096ff000 - 098ff000 size 00200000 taken=1 tag=mem 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 098ff000 - 09eff000 size 00600000 taken=1 tag=mbl-fixed 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09eff000 - 09fff000 size 00100000 taken=1 tag=mbl-fragment 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:398 Block: 09fff000 - 0a000000 size 00001000 taken=1 tag=rsv 20:39:497 Back W[SCEKERNEL]: Util\BlockAllocator.cpp:400 ----------- 20:39:497 Back E[SCEKERNEL]: Util\BlockAllocator.cpp:141 Block Allocator (08800000-0a000000) failed to allocate 1048576 (00100000) bytes of contiguous memory 20:45:471 Back E[SCEKERNEL]: HLE\sceKernelMemory.cpp:1811 AllocMemoryBlock(mem, 0, 00100000, 00000000): allocation failed ```

Btw, i wished this kind of Memory Block List that contains their Start address and Tag name could be listed in Memory Viewer

unknownbrackets commented 3 years ago

There are actually tests for the Utility allocations, which I'm pretty sure do hit user memory. But maybe we get some of the top/bottom wrong.

Some time ago, I did some JpscpTrace of GEB (not GE2) to compare some of the allocations to get it more accurate. It was fruitful but painfully slow. That's how I figured out the UserSbrk stuff.

We should really improve the memory viewer...

-[Unknown]

cybercjt commented 2 years ago

It's been years and the version 1.40 of the game is still not playable.

I know that it's not your priority and it was released on other platforms as well but hoping you guys fix it someday.

unknownbrackets commented 2 years ago

Btw, i wished this kind of Memory Block List that contains their Start address and Tag name could be listed in Memory Viewer

If it helps, this is in now, it should make it easier to understand where this RAM is being used. There's no "zoom out" though, which is a thing I was thinking about how to implement.

Anyway, it might be a really good idea to get a RAM dump from a real PSP at the start menu, even, and compare to a RAM dump from PPSSPP in the same place. It's a bit hard and might need to be complimented with a JpcspTrace to log allocations. Finding the differences is probably the path to fixing this.

For example, the netpool allocations were generally validated on a PSP, but maybe top/bottom isn't right or maybe it's not actually one solid allocation.

-[Unknown]

Deka710 commented 1 year ago

Screenshot_2023-02-23-07-07-27-866_org ppsspp ppssppgold 1.14.4 😢 , God Eater 2 1.40

IrfanH495 commented 5 months ago

yes that's right, can only bring npc on training missions https://youtu.be/DVE7vTY6Rik and fc in minutes 28:28 ppsspp v1.1.1

IrfanH495 commented 4 months ago

if multiplayer is possible, if i bring npc it will be fc

Screenshot_20240330-032309_PPSSPP