Skip to content

[macOS] Multiprocessing EOFError during asset conversion with Python 3.13 #1762

Description

@jyanminz

Description:
When attempting to convert game assets on macOS (Apple Silicon), the process fails with a multiprocessing EOFError. The error occurs specifically when using multiprocessing.Manager().

Environment:

macOS Version: 15.3.2
Python Version: 3.13.2 (Homebrew)
Hardware: Apple Silicon M4
Openage build: Debug mode with Homebrew LLVM

Error log:

Do you want to convert assets? [Y/n]
> y

openage requires a local game installation for conversion
but no local installation could be found automatically.
  Do you want to download the AoC trial version? [Y/n]
> y
Downloading AoC trial version from https://archive.org/download/AgeOfEmpiresIiTheConquerorsDemo/Age2XTrial.exe
Extracting game files to [Directory(/var/folders/6j/8zwr8lhn1v51_drcq1nl252h0000gn/T/tmpk2d988fl)]:...
converting from '/var/folders/6j/8zwr8lhn1v51_drcq1nl252h0000gn/T/tmpk2d988fl'
INFO [py] Looking for compatible games to convert...
INFO [py] Compatible game edition detected:
INFO [py]  * Age of Empires 2: The Conqueror's Trial Version
INFO [py] converting metadata
INFO [py] using cached wrapper: /var/folders/6j/8zwr8lhn1v51_drcq1nl252h0000gn/T/AOC_empires2_x1.dat.pickle
INFO [py] Finished metadata read (0.67 seconds)
INFO [py] Starting conversion...
INFO [py] Extracting Genie data...
INFO [py] Creating API-like objects...
INFO [py] Linking API-like objects...
INFO [py] Generating auxiliary objects...
INFO [py] Creating nyan objects...
INFO [py] Creating requests for media export...
INFO [py] Finished data conversion (1.30 seconds)
INFO [py] Starting export...
INFO [py] Dumping info file...
INFO [py] Dumping data files...
INFO [py] Exporting media files...
INFO [py] -- Exporting graphics files...
usage: openage [-h] [--version]
               {main,game,test,convert,convert-file,convert-export-api,codegen} ...
usage: openage [-h] [--version]
               {main,game,test,convert,convert-file,convert-export-api,codegen} ...
openage: error: argument subcommand: invalid choice: 'from multiprocessing.resource_tracker import main;main(11)' (choose from main, game, test, convert, convert-file, convert-export-api, codegen)
openage: error: argument subcommand: invalid choice: 'from multiprocessing.spawn import spawn_main; spawn_main(tracker_fd=12, pipe_handle=14)' (choose from main, game, test, convert, convert-file, convert-export-api, codegen)
Traceback (most recent call last):
  File "run.py", line 20, in init run
    main()
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/__main__.py", line 168, in main
    return args.entrypoint(args, cli.error)
           ~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/main.py", line 284, in main
    convert_assets(outdir, args, srcdir)
    ~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/main.py", line 121, in convert_assets
    convert(args)
    ~~~~~~~^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/tool/driver.py", line 35, in convert
    convert_metadata(args)
    ~~~~~~~~~~~~~~~~^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/tool/driver.py", line 108, in convert_metadata
    ModpackExporter.export(modpack, args)
    ~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/processor/export/modpack_exporter.py", line 60, in export
    MediaExporter.export(modpack.get_media_files(), sourcedir, modpack_dir, args)
    ~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/processor/export/media_exporter.py", line 122, in export
    MediaExporter._export_multithreaded(
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
        cur_export_requests,
        ^^^^^^^^^^^^^^^^^^^^
    ...<8 lines>...
        args.dll_manager,
        ^^^^^^^^^^^^^^^^^
    )
    ^
  File "/Users/jiangyanmin/Desktop/openage/.bin/opt-homebrew-opt-llvm-bin-clang++-debug-Oauto-sanitize-none/openage/convert/processor/export/media_exporter.py", line 263, in _export_multithreaded
    with multiprocessing.Manager() as manager:
         ~~~~~~~~~~~~~~~~~~~~~~~^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/context.py", line 57, in Manager
    m.start()
    ~~~~~~~^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/managers.py", line 569, in start
    self._address = reader.recv()
                    ~~~~~~~~~~~^^
  File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/connection.py", line 430, in _recv_bytes
    buf = self._recv(4)
  File "/opt/homebrew/Cellar/python@3.13/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/connection.py", line 399, in _recv
    raise EOFError
EOFError

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: assetsInvolved with assets (images, sounds, ...)bugBehaving differently as it should behavelang: pythonDone in Python codeos: macosmacOS-specific issue

    Type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions