Skip to content

ModuleMetadata::Dump() produces no output on Linux for Dota 2 (only filesystem_stdio attempted) #10

Description

@z3nnik

Summary

On Linux, DumpSource2-DOTA completes successfully and dumps schemas (schemas/, schemas.json), convars, and commands, but module_metadata/ is never created — no .kv3 files.

On Windows, GameTracking’s Dota 2 pipeline produces a full DumpSource2/module_metadata/ tree (client.kv3, server.kv3, particles.kv3, etc.).

Environment

Game: Dota 2 (AppID 570), ClientVersion=6840 (Jun 28 2026)
OS: Ubuntu 24.04 LTS, x86_64
Binary: DumpSource2-DOTA from GameTracking tools release tools-linux-x64.tar.gz (2026-06-27, build 5eb38ed)
Client: game/dota/bin/linuxsteamrt64/libclient.so (depot 373306)
CWD: game/bin/linuxsteamrt64/ (same layout as GameTracking dump_source2.sh)
LD_LIBRARY_PATH: linuxsteamrt64 + SDL3 (implib stub for libvideo.so only)

Steps to reproduce

  1. Download Dota 2 Linux binaries (incl. libclient.so) and game/bin/linuxsteamrt64/ deps.
  2. Apply implib stub for libvideo.so (as in GameTracking dump_source2.sh).
  3. From game/bin/linuxsteamrt64/:
LD_LIBRARY_PATH="$(pwd):$SDL3_PATH" ./DumpSource2-DOTA /path/to/DumpSource2/output
  1. Check output directory.

Expected behavior

Same as GameTracking-Dota2 on Windows:

  • DumpSource2/module_metadata/client.kv3
  • DumpSource2/module_metadata/server.kv3
  • ~30 .kv3 files total with resource_manifests, etc.

Actual behavior

  • convars.txt, commands.txt, schemas/, schemas.json — OK
  • module_metadata/ — missing (directory not created)
  • Log shows module metadata step starts, but only one module is processed:
[info] Dumping module metadata
[info] Dumping metadata for filesystem_stdio
  • No further Dumping metadata for client / server / etc.

No warnings/errors mentioning ExtractModuleMetadata or empty module metadata.

grep 'Dumping metadata for' dumpsource2.log
# only: filesystem_stdio
find DumpSource2/module_metadata -name '*.kv3' | wc -l
# 0 (directory does not exist)

Additional context

ModuleMetadata::Dump() only creates module_metadata/ when buf is non-empty after ExtractModuleMetadata().

For filesystem_stdio, the log line appears but no .kv3 is written → buffer appears empty.

Game modules (client, server, …) are not logged at all — unclear if they are missing from Modules::allModules on Linux or skipped earlier.

Schema-related warnings during dump (unrelated to this issue):

Metadata 'MDebugSnapshotDataRenderFn' has unknown value for parser

Question

Is ExtractModuleMetadata / module_metadata KV3 export expected to work on Linux for Dota 2? If not, could this be documented? If yes, is there a known workaround (extra libs, different cwd, win64-only modules list)?

Happy to provide full dumpsource2-last.log, binary hashes, or test on a specific DumpSource2 commit.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions