Problems with Mem Pool and Octal PSRAM

LVGL 8.4, ESP32S3, PlatformIO w/ ArduinoESP32 Core

I cannot get LVGL to function correctly with the object mem pool in Octal PSRAM.
I am porting my current project to the ESP32-S3-Touch-LCD-1.85C, PSRAM is required as the S3 does not have enough DRAM for all the features I use.
On the other board, ESP32-S3-Touch-LCD-1.28, I have its Quad PSRAM working flawlessly; code as follows:

platformio.ini:

[env:waveshare_esp32s3_touch_lcd_128]
platform = espressif32
board = waveshare_esp32s3_touch_lcd_128
framework = arduino
monitor_speed = 115200

board_build.arduino.memory_type = qio_qspi

board_build.filesystem = littlefs
board_build.partitions = app3M_spiffs9M_fact512k_16MB.csv
platform_packages = 
	framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1
	framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip
lib_deps = 
	contrem/arduino-timer@^3.0.1
	bodmer/TFT_eSPI@^2.5.43
	lvgl/lvgl@8.3.10
	bblanchon/ArduinoJson@^7.2.2
	adafruit/Adafruit INA219@^1.2.3
build_flags = 
	-std=gnu++23
	-Wno-deprecated-enum-enum-conversion

	-DBOARD_HAS_PSRAM
	-mfix-esp32-psram-cache-issue

	-D FREERTOS_HEAP_IMPLEMENTATION=4

lv_conf.h:

/*=========================
   MEMORY SETTINGS
 *=========================*/

/*1: use custom malloc/free, 0: use the built-in `lv_mem_alloc()` and `lv_mem_free()`*/
#define LV_MEM_CUSTOM 0
#if LV_MEM_CUSTOM == 0
    /*Size of the memory available for `lv_mem_alloc()` in bytes (>= 2kB)*/
    #define LV_MEM_SIZE (256 * 1024U)          /*[bytes]*/

    /*Set an address for the memory pool instead of allocating it as a normal array. Can be in external SRAM too.*/
    #define LV_MEM_ADR 0     /*0: unused*/
    /*Instead of an address give a memory allocator that will be called to get a memory pool for LVGL. E.g. my_malloc*/
    #if LV_MEM_ADR == 0
        // #undef LV_MEM_POOL_INCLUDE
        // #undef LV_MEM_POOL_ALLOC
        #define LV_MEM_POOL_INCLUDE <esp32-hal-psram.h> //put LVGL obj pool in PSRAM
        #define LV_MEM_POOL_ALLOC ps_malloc
    #endif

#else       /*LV_MEM_CUSTOM*/
    #define LV_MEM_CUSTOM_INCLUDE <stdlib.h>   /*Header for the dynamic memory function*/
    #define LV_MEM_CUSTOM_ALLOC   malloc
    #define LV_MEM_CUSTOM_FREE    free
    #define LV_MEM_CUSTOM_REALLOC realloc
#endif     /*LV_MEM_CUSTOM*/

But on the 1.85C, the program successfully compiles, enables PSRAM; [even showing its using some “PSRAM: 8122852 / 8388608”] but the program completely freezes at arbitrary points. And I mean arbitrary, changing things like a Serial.println command will change its behaviour.
My program has many screens and objects, and I enable the screens one at a time with functions like this:

style_constructor_main();
led_init();
create_top_layer();
ui_construct_pwm();
ui_construct_timer();
ui_construct_toggle();
ui_construct_settings();
ui_construct_os_warning(false);
ui_construct_main(true);

The 1.85C with PSRAM mem pool always freezes before all screens are initialized, breaking somewhere between pwm and toggle. There is nothing wrong with the objects in these files, they are confirmed working on the other board.
When running LVGL mem pool in DRAM, my program displays correctly [but of course I have to disable certain components to make enough space in DRAM]

platformio.ini:

[env:esp32-s3-devkitc-1]
platform = espressif32
board = esp32-s3-devkitc-1
framework = arduino
monitor_speed = 115200

board_build.arduino.memory_type = qio_opi
board_build.flash_mode = qio

board_build.filesystem = littlefs
; board_build.partitions = app3M_spiffs9M_fact512k_16MB.csv
; board_build.psram_type = opi
board_upload.flash_size = 16MB
board_upload.maximum_size = 16777216
; board_build.partitions = default_16MB.csv
platform_packages = 
  	framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.1
  	framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.1/esp32-arduino-libs-3.0.1.zip
lib_deps = 
    lvgl/lvgl@8.3.10
    contrem/arduino-timer@^3.0.1
    bblanchon/ArduinoJson@^7.2.2
build_flags = 
    -std=gnu++23
    -Wno-deprecated-enum-enum-conversion
    -D ARDUINO_USB_MODE=1
	-D ARDUINO_USB_CDC_ON_BOOT=1

    -DBOARD_HAS_PSRAM
    -mfix-esp32-psram-cache-issue

    -D FREERTOS_HEAP_IMPLEMENTATION=4

My LV memory settings are identical, however I have tried switching to -

#define LV_MEM_POOL_INCLUDE     "esp_heap_caps.h"
#define LV_MEM_POOL_ALLOC(size) heap_caps_malloc(size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT)

this results in identical behaviour.
I have also tried adding the size arguments to ps_malloc, same behaivor.
I have tried changing various arguments in platformio.ini, seeing if it runs in ‘opi_qspi’ mode, removing the ‘mfix-esp32-psram-cache-issue’, etc. However they always result in either a crash, failed compile or this freezing before all the objects are initialized.
I have also tried increasing or reducing the mem pool, no effect.

As far as I know that is all relevant information, if this post is lacking something please let me know. Thank you for reading and any assistance!