beyond-all-reason / beyond-all-reason/RecoilEngine
EngineCrash [2025.06.24] at /build/src/rts/System/FileSystem/ArchiveScanner.cpp:1312
- Dominant language
- C++
- Stars
- 679
- Forks
- 290
- Avg merge
- 3d 2h
- Merged PRs (30d)
- 40
Description
**URL of infolog.txt**
```
[t=00:00:00.000000] [DataDirLocater::FindWriteableDataDir] using writeable data-directory "/home/spads/spads/var/ClusterManager/Host[EU7][017]/"
[t=00:00:00.000027] Using writeable configuration source: "/home/spads/spads/var/ClusterManager/Host[EU7][017]/springsettings.cfg"
[t=00:00:00.000029] Using additional read-only configuration source: "/home/spads/spads/var/spring/recoil_2025.06.24_amd64-linux/springsettings.cfg"
[t=00:00:00.000031] ============== ==============
[t=00:00:00.000033]
[A] ArchiveScanner
[A] AutohostInterface
[A] CrashHandler
[A] DedicatedServer
[A] GameServer
[A] VFS
[E] DedicatedServer (Notice)
[E] VFS (Info)
[t=00:00:00.000035]
[t=00:00:00.000036] Enable or disable log sections using the LogSections configuration key
[t=00:00:00.000038] or the SPRING_LOG_SECTIONS environment variable (both comma separated).
[t=00:00:00.000040] Use "none" to disable the default log sections.
[t=00:00:00.000041] ============== ==============
[t=00:00:00.000043] ============== ==============
[t=00:00:00.000045] LogFlushLevel = 0
[t=00:00:00.000046] ServerLogDebugMessages = 1
[t=00:00:00.000048] ServerLogInfoMessages = 1
[t=00:00:00.000050] ============== ==============
[t=00:00:00.000051] ============== ==============
[t=00:00:00.000053] Spring Engine Version: 2025.06.24 (Dedicated)
[t=00:00:00.000054] Build Environment: gcc libstdc++ version 20230711
[t=00:00:00.000056] Compiler Version: gcc-13.1.0
[t=00:00:00.000058] Operating System: Linux 6.12.85+deb13-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.85-1 (2026-04-30) (x86_64)
[t=00:00:00.000060] Hardware Config: AMD EPYC 7763 64-Core Processor; 32102MB RAM
[t=00:00:00.000061] Binary Word Size: 64-bit (native)
[t=00:00:00.000063] Process Clock: std::chrono::high_resolution_clock
[t=00:00:00.000064] Detected AMD CPU.
[t=00:00:00.000066] Found logical processors (mask 0x000000ff) using L3 cache (sized 16KB)
[t=00:00:00.000068] Physical CPU Cores: 8
[t=00:00:00.000069] Logical CPU Cores: 8
[t=00:00:00.000071] ============== ==============
[t=00:00:00.000073] LogOutput initialized. Logging to /home/spads/spads/var/ClusterManager/Host[EU7][017]/infolog.txt
[t=00:00:00.000410] [DataDirLocater::FindWriteableDataDir] using writeable data-directory "/home/spads/spads/var/ClusterManager/Host[EU7][017]/"
[t=00:00:00.000432] [DataDirLocater::Check] Portable Mode!
[t=00:00:00.000438] [DataDirLocater::FilterUsableDataDirs] using read-write data directory: /home/spads/spads/var/ClusterManager/Host[EU7][017]/
[t=00:00:00.000444] [DataDirLocater::FilterUsableDataDirs] using read-only data directory: /home/spads/spads/var/spring/recoil_2025.06.24_amd64-linux/
[t=00:00:00.336867] Scanning: /home/spads/spads/var/spring/recoil_2025.06.24_amd64-linux/base
[t=00:00:00.337088] Scanning: /home/spads/spads/var/spring/recoil_2025.06.24_amd64-linux/maps
[t=00:00:00.337111] Scanning: /home/spads/spads/var/spring/recoil_2025.06.24_amd64-linux/games
```
**Engine Version**
2025.06.24
**Translated Stack Trace with links**
From gdb on server
```
munmap_chunk(): invalid pointer
Program received signal SIGABRT, Aborted.
0x00007ffff7d5e95c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) bt
#0 0x00007ffff7d5e95c in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7d09cc2 in raise () from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff7cf24ac in abort () from /lib/x86_64-linux-gnu/libc.so.6
#3 0x00007ffff7cf3291 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#4 0x00007ffff7d68465 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#5 0x00007ffff7d686ec in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#6 0x00007ffff7d6d3d8 in free () from /lib/x86_64-linux-gnu/libc.so.6
#7 0x0000555555658685 in std::__cxx11::basic_string, std::allocator >::~basic_string (
this=, __in_chrg=) at /usr/include/c++/13/bits/basic_string.h:792
#8 std::pair, std::allocator >, CArchiveScanner::FileInfo>::~pair
(this=, __in_chrg=) at /usr/include/c++/13/bits/stl_pair.h:187
#9 emilib::HashMap, std::allocator >, CArchiveScanner::FileInfo, spring::synced_hash, std::allocator > >, emilib::HashMapEqualTo, std::allocator > > >::erase (it=..., this=0x555555a98ba8)
at /build/src/rts/System/SpringHashMap.hpp:472
#10 CArchiveScanner::WriteCacheData (this=, filename=...)
at /build/src/rts/System/FileSystem/ArchiveScanner.cpp:1312
#11 0x0000555555659d70 in CArchiveScanner::ScanAllDirs (this=)
at /build/src/rts/System/FileSystem/ArchiveScanner.cpp:466
#12 0x000055555565a57b in CArchiveScanner::CArchiveScanner (this=this@entry=0x555555a98b30)
at /build/src/rts/System/FileSystem/ArchiveScanner.cpp:396
#13 0x00005555556ac892 in FileSystemInitializer::InitializeTry ()
at /build/src/rts/System/FileSystem/FileSystemInitializer.cpp:80
#14 0x00005555556ac9b1 in FileSystemInitializer::Initialize () at /build/src/rts/System/FileSystem/FileSystemInitializer.cpp:66
#15 0x00005555556263f7 in main (argc=, argv=) at /build/src/rts/builds/dedicated/main.cpp:132
```
**Additional context**
[startscript.txt](https://github.com/user-attachments/files/28912333/startscript.txt)
Contributor guide
Research direction
Start in rts/System/FileSystem/ArchiveScanner.cpp around WriteCacheData at line 1312, then inspect SpringHashMap.hpp around erase line 472 and the ScanAllDirs call at line 466. Reproduce the dedicated-server startup using the attached startscript.txt and the reported archive paths, then use the stack trace to investigate the invalid pointer. Done means archive scanning completes without the munmap_chunk abort.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100