diff options
| author | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
|---|---|---|
| committer | Christian Krinitsin <mail@krinitsin.com> | 2025-07-17 09:10:43 +0200 |
| commit | f2ec263023649e596c5076df32c2d328bc9393d2 (patch) | |
| tree | 5dd86caab46e552bd2e62bf9c4fb1a7504a44db4 /results/scraper/fex/3519 | |
| parent | 63d2e9d409831aa8582787234cae4741847504b7 (diff) | |
| download | qemu-analysis-main.tar.gz qemu-analysis-main.zip | |
Diffstat (limited to 'results/scraper/fex/3519')
| -rw-r--r-- | results/scraper/fex/3519 | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/results/scraper/fex/3519 b/results/scraper/fex/3519 new file mode 100644 index 000000000..7e44f0fa0 --- /dev/null +++ b/results/scraper/fex/3519 @@ -0,0 +1,33 @@ +Sekiro under Proton crashes with thunks +Sekiro when running under Proton crashes if thunks are enabled. For some reason it gets a nullptr dereference in vkCreateInstance because the pointer is null. + +With a hack I can get it to work: +```diff +diff --git a/ThunkLibs/libvulkan/Host.cpp b/ThunkLibs/libvulkan/Host.cpp +index 1cfaa4227..de5cf2ec9 100644 +--- a/ThunkLibs/libvulkan/Host.cpp ++++ b/ThunkLibs/libvulkan/Host.cpp +@@ -77,6 +77,10 @@ static VkResult FEXFN_IMPL(vkCreateInstance)(const VkInstanceCreateInfo* a_0, co + } + } + ++ if (LDR_PTR(vkCreateInstance) == nullptr) [[unlikely]] { ++ (void*&)LDR_PTR(vkCreateInstance) = (void*)dlsym_default(fexldr_ptr_libvulkan_so, "vkCreateInstance"); ++ } ++ + VkInstance out; + auto ret = LDR_PTR(vkCreateInstance)(vk_struct_base, nullptr, &out); + if (ret == VK_SUCCESS) { + ``` + +Weirdly, the other symbols loaded with `DoSetupWithInstance` are populated +``` +(gdb) p/x fexldr_ptr_libvulkan_vkCreateInstance +$1 = 0x0 +(gdb) p/x fexldr_ptr_libvulkan_vkCreateDevice +$2 = 0x7fffc6f9f990 +(gdb) p/x fexldr_ptr_libvulkan_vkGetDeviceProcAddr +$3 = 0x7fffc6f9e1a0 +``` + +This should be investigated, I'm not sure how many games are hitting this issue. \ No newline at end of file |