Skip to content

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

@jyanminz

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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/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/[email protected]/3.13.2/Frameworks/Python.framework/Versions/3.13/lib/python3.13/multiprocessing/connection.py", line 399, in _recv
    raise EOFError
EOFError

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

    Status

    πŸ“‹ Backlog

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions