Skip to main content

On Sale: GamesAssetsToolsTabletopComics
Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

tinto21

1
Posts
A member registered 17 days ago

Recent community posts

This crash report indicates a Segmentation Fault (SIGSEGV) occurring immediately when the game attempts to perform a drawing operation. This is a critical issue that stops the game instantly.

The core problem is an Invalid Memory Access deep within the Vulkan rendering pipeline, specifically when trying to bind data ("push constants") to a shader. Essentially, the code attempted to access an object or structure that was not properly loaded or initialized, causing the program to crash.

This strongly suggests an internal bug related to:

  • Vulkan Object Lifecycle: A rendering object (like a command buffer, shader, or pipeline state) was likely destroyed prematurely or never correctly created, leading to a null reference.
  • Initialization Flow: The error happens during the drawing sequence, implying that a critical piece of rendering data was missing when the RenderingServer attempted to draw the first frame.

The exception is an EXC_BAD_ACCESS (SIGSEGV) with KERN_INVALID_ADDRESS at 0x0000000000000028.

1. Dereferencing Offset $0x28$ on a Null Pointer

The 0x28 address is the key indicator: the program is dereferencing a pointer that is effectively NULL (or zero), but trying to access a member field located at an offset of 40 bytes (0x28 in hexadecimal) from that null base address.

  • Target Address: 0x28
  • Error Code: 0x00000004 (read fault)

This is a classic C/C++ error where the object pointer (struct* obj) is null, and the code tries to access obj->member, where member is the 4th or 5th pointer-sized field in the structure.

2. The Crash Location (Stack Trace)

The crash occurs on the main thread (Thread 0) at:

0 Project P.I.T.T 0x1081fdb70 RenderingDeviceDriverVulkan::command_bind_push_constants(...) + 16 

This points directly to the Vulkan backend implementation. The function signature is:

RenderingDeviceDriverVulkan::command_bind_push_constants(CommandBufferID, ShaderID, unsigned int, VectorView<unsigned int>)

Given the crash address (0x28) and the function, the most likely candidate for the null dereference is the implicit this pointer or one of the explicit RenderingDeviceDriver objects (like the CommandBufferID) being used inside this function, which is often a pointer to the internal driver data.

Immediate Action:

The developers should inspect the source code of RenderingDeviceDriverVulkan::command_bind_push_constants (or the equivalent code near the instruction offset +16). The code is performing a memory read (as indicated by Error Code: 0x00000004) using a register that holds 0x28 as the address.

The instruction stream snippet confirms the read using the base address in register rdi plus an offset, which is exactly where the crash happens (marked by ==>):

... 48 8b 3e [48]8b 72 28 8b 12 c1 e1-02 46 8d 04 8d 00 00 00  H.r(.....F...... <== 

The assembly instruction 48 8b 72 28 (equivalent to mov rsi, [rdx + 0x28] or similar, depending on preceding operations) attempts to read from [register + 0x28]. If the register holds 0x0000000000000000, the read fails at address 0x28.

Conclusion: A mandatory Vulkan object required to execute command_bind_push_constants is null in the calling context, most likely due to improper synchronization or improper resource handling during the end-of-frame operations (RenderingDevice::_end_frame()) which precedes this call.