mirror of
https://github.com/spice2x/spice2x.github.io.git
synced 2026-10-04 17:28:12 -07:00
misc: various clean up for diagnosing launch failures (#872)
## Link to GitHub Issue or related Pull Request, if one exists #345 ## Description of change **IIDX TDJ rom probe no longer touches removable media** — `C:\000rom.txt` and `D:\001rom.txt` are not emulated paths; they hit whatever is actually mounted on the user's machine. `D:` is commonly an optical drive or card reader, and the launcher clears `SEM_FAILCRITICALERRORS` process-wide before attach, so an empty drive raises the modal *"insert a disk"* dialog and blocks the attaching thread. The probe now checks `GetDriveTypeW` and only reads fixed and RAM disks. **`iat_find` no longer calls `log_fatal` on an unparseable module** — `iat_try(nullptr)` walks every loaded module, including foreign ones (injected, manually mapped, header wiped by AV/EDR/overlays). A non-`MZ` DOS header called `log_fatal`. There is nothing to hook in such a module, so it is skipped. **`logger::stop()` can no longer hang forever** — hook installation suspends every other thread, including the logging thread. `stop()` unconditionally joined that thread, so `log_fatal` and the 30-second `show_popup` watchdog both wedged instead of terminating, and logging is asynchronous so nothing reached log.txt either. It now waits with a timeout, then detaches and flushes synchronously. **`GetFileSizeEx` was never hooked** — the hook was registered under the name `"GetFileSize"`, so it re-patched that slot instead. **Warn when `-modules` is set** — it changes where the game is run from, and is usually set accidentally. ## Testing *how was the code tested?*
This commit is contained in:
@@ -1683,6 +1683,26 @@ int main_implementation(int argc, char *argv[]) {
|
||||
});
|
||||
}
|
||||
|
||||
if (options[launcher::Options::PathToModules].is_active() && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_warning(
|
||||
"launcher",
|
||||
"WARNING - user specified -modules option\n\n\n"
|
||||
"!!! !!!\n"
|
||||
"!!! Using -modules changes which game DLLs get loaded! !!!\n"
|
||||
"!!! Unless you know exactly what you are doing, clear -modules !!!\n"
|
||||
"!!! and try again; usually this is accidentally set by users !!!\n"
|
||||
"!!! without understanding the implications. !!!\n"
|
||||
"!!! !!!\n"
|
||||
);
|
||||
deferredlogs::defer_error_messages({
|
||||
"-modules option specified by user",
|
||||
" game DLLs and patches are loaded from that folder instead of the spice folder,",
|
||||
" and it is also prepended to the DLL search path, so dependencies may resolve to",
|
||||
" unexpected copies; instead, clear -modules option and place spice binaries in",
|
||||
" the intended game directory",
|
||||
});
|
||||
}
|
||||
|
||||
if (launcher::signal::DISABLE && !cfg::CONFIGURATOR_STANDALONE) {
|
||||
log_warning(
|
||||
"launcher",
|
||||
|
||||
Reference in New Issue
Block a user