Infinite loop at sceGsSyncVCallback (0x006E5380) & MSVC LTO Linker hang on large projects

Đang mở
#421 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Maintainer thường phản hồi trong vòng 5 ngày

Chưa có ai nhận issue này.

Đánh giá

Độ khó
5/5
Thời gian dự kiến
Hơn một tuần
Mức phù hợp với người mới
15/100
Loại issue
Lỗi
Độ rõ ràng
Khá rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
cmake, cpp

Hướng nghiên cứu

The hang is at PC 0x006E5380 (sceGsSyncVCallback), so start with how stubs in config.toml and ps2_game_overrides::bindAddressHandler in loi_override.cpp are consumed by the runtime, since both were tried and neither stopped the [run:tick] output. Separately, check whether INTERPROCEDURAL_OPTIMIZATION in CMakeLists.txt reaches the ps2EntryRunner target. Done means the tick loop stops at that address and the link finishes without /GL. This needs runtime and build-system knowledge, so it is not a good first task.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

Hi! First of all, thank you for the incredible PS2Recomp framework.

I am trying to recompile Castlevania: Lament of Innocence (USA, SLUS-207.33). The recompilation itself was a massive success: ps2_recomp.exe generated 11,078 functions with 0 decode failures. The game successfully loads and initializes PS2 system modules (SDRDRV, LIBSD, SIO2MAN).

However, I am hitting two blockers. To save your time, I have prepared a clean repository with my configs, CMake, and the override file:
👉 https://github.com/Om3g4-Dev/Castlevania-LOI-Recomp

Here is a summary of the issues:

1. Infinite loop at 0x006E5380 (sceGsSyncVCallback)
The game gets stuck in an infinite loop at pc=0x006E5380. I tried two approaches:

  • Adding "ret0@0x006E5380" to stubs in config.toml.
  • Using ps2_game_overrides::bindAddressHandler(runtime, 0x006E5380, "sceGsSyncVCallback") in loi_override.cpp.
    Neither worked. The runtime continues to output [run:tick] pc=0x6e5380 indefinitely. Is this address a special callback that requires a different handling mechanism?

2. MSVC Linker Hang (LTO)
When building ps2EntryRunner with 11,000 generated .cpp files, link.exe consumes 4.4+ GB of RAM and hangs for hours due to the /GL (Whole Program Optimization) flag. I added INTERPROCEDURAL_OPTIMIZATION FALSE to CMakeLists.txt, but it didn't seem to take effect on the build time. Is there a recommended way to disable LTO for generated targets?

Any advice on these two issues would be greatly appreciated. Thank you!

Ngôn ngữ chính
C++
Star
3.3k
Fork
149
Merge trung bình
8 giờ 46 phút
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của ran-j/PS2Recomp

Tất cả issue của ran-j/PS2Recomp

Issue tương tự

Thêm issue về C++

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.