Skip to content

LLVM ERROR: out of memory for arm64 linux #803

@kero990

Description

@kero990

Hello,

Thank you very much for your project.

I am currently trying to compile the project on an ARM64 Linux system. The compilation is successful, but I encounter a runtime error.

./Gothic2Notr -g ../Gothic_II/
OpenGothic v1.0 dev
WARNING: radv is not a conformant vulkan implementation, testing use only.
no "SystemPack.ini" file in path - using default settings
no "Gothic.ini" file in path - using default settings
Switching music provider to 'OpenGothic'
LLVM ERROR: out of memory

crash.log:

---crashlog(SIGABRT)---
GPU: AMD RADV OLAND (LLVM 7.0.1)
#1: gsignal - /lib/aarch64-linux-gnu/libc.so.6(gsignal+0xac) [0xffff8d5fea44]
#2: abort - /lib/aarch64-linux-gnu/libc.so.6(abort+0x110) [0xffff8d5ec9a8]
#3: llvm::report_bad_alloc_error(char const*, bool) - /lib/aarch64-linux-gnu/libLLVM-7.so.1(_ZN4llvm22report_bad_alloc_errorEPKcb+0x94) [0xffff86322be8]

Here is the log from when I debugged with GDB.

(gdb) run -g ../Gothic_II/
Starting program: /media/inspur/_dde_data/game/tmp/gothic2/opengothic/Gothic2Notr -g ../Gothic_II/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
OpenGothic v1.0 dev
[Detaching after fork from child process 26583]
[New Thread 0xffffef865180 (LWP 26585)]
WARNING: radv is not a conformant vulkan implementation, testing use only.
[New Thread 0xffffeea2a180 (LWP 26586)]
[New Thread 0xffffee229180 (LWP 26587)]
[New Thread 0xffffeda28180 (LWP 26588)]
[New Thread 0xffffbfffe180 (LWP 26589)]
no "SystemPack.ini" file in path - using default settings
no "Gothic.ini" file in path - using default settings
[New Thread 0xffffa1bc5180 (LWP 26591)]
Switching music provider to 'OpenGothic'
LLVM ERROR: out of memory

Thread 4 "threaded-ml" received signal SIGABRT, Aborted.
[Switching to Thread 0xffffee229180 (LWP 26587)]
__GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
50      ../sysdeps/unix/sysv/linux/raise.c: no such file or dir
(gdb) bt
#0  __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
#1  0x0000fffff777b9a8 in __GI_abort () at abort.c:79
#2  0x0000fffff04b1be8 in llvm::report_bad_alloc_error(char const*, bool) ()
   from /lib/aarch64-linux-gnu/libLLVM-7.so.1
#3  0x0000fffff04b1c64 in ?? () from /lib/aarch64-linux-gnu/libLLVM-7.so.1
#4  0x0000000000537068 in std::__new_allocator<unsigned char>::allocate (this=<optimized out>, 
    __n=9223372036854775807) at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/new_allocator.h:126
#5  std::allocator<unsigned char>::allocate (this=<optimized out>, __n=9223372036854775807)
    at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/allocator.h:196
#6  std::allocator_traits<std::allocator<unsigned char> >::allocate (__a=..., __n=9223372036854775807)
    at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/alloc_traits.h:515
#7  std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_allocate (this=0xffffee227ac0, 
    __n=9223372036854775807) at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/stl_vector.h:380
#8  std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_M_create_storage (
    this=0xffffee227ac0, __n=9223372036854775807)
    at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/stl_vector.h:398
#9  std::_Vector_base<unsigned char, std::allocator<unsigned char> >::_Vector_base (this=0xffffee227ac0, 
    __n=9223372036854775807, __a=...) at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/stl_vector.h:334
#10 std::vector<unsigned char, std::allocator<unsigned char> >::vector (this=0xffffee227ac0, 
    __n=9223372036854775807, __a=...) at /opt/rh/gcc-toolset-14/root/usr/include/c++/14/bits/stl_vector.h:557
#11 Dx8::DirectMusic::load (this=0x1bfe5d0, fsgt=<optimized out>)
    at /root/OpenGothic/game/dmusic/directmusic.cpp:21
--Type <RET> for more, q to quit, c to continue without paging--q
Quit

ChatGPT analysis told me that the crash occurs in the DirectMusic module (dmusic/directmusic.cpp:21), where it attempts to allocate a std::vector<uint8_t>(9223372036854775807)—which is 8 EB (8 × 10¹⁸ bytes)—of memory. Obviously, such a request cannot succeed, so LLVM reports an out-of-memory error and the process aborts directly.

I am not sure if this is the correct analysis, but I would appreciate your help.

Additionally, I would like to ask if the project currently has an interface to integrate languages that were not supported by the original games, such as CJK fonts like Chinese, Japanese, and Korean.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions