This is an automated archive made by the Lemmit Bot.

The original was posted on /r/linux_gaming by /u/descawed on 2024-04-08 01:07:13.


I’m hoping for some help troubleshooting Morrowind on Proton Experimental (I know about OpenMW but I want to use mods that aren’t compatible). I’m using MGE XE, which converts the game from DX8 to DX9 and adds some graphical features. For testing, I’ve disabled all my other mods. I’ve got the game installed on Linux and Windows (dual-booting on the same PC) with identical settings except for the draw distance for MGE’s Distant Land feature, which is measured in “cells” on the game’s grid system.

Here’s my problem. On Windows, I’ve set the draw distance as high as 50 cells, and the game runs fine and uses about 600MB of memory. On Linux, once I push the draw distance into the range of 35-40 cells, the game starts crashing in exteriors, I think due to running out of memory (this is a 32-bit game so it can’t use more than 4GiB). The actual crash from the Proton log is a segfault in the GPU driver:

2362.553:0120:0138:trace:seh:handle_syscall_fault code=c0000005 flags=0 addr=0xe9a63fa8 ip=e9a63fa8
2362.553:0120:0138:trace:seh:handle_syscall_fault  info[0]=00000001
2362.553:0120:0138:trace:seh:handle_syscall_fault  info[1]=00000028
2362.553:0120:0138:trace:seh:handle_syscall_fault  eax=00000000 ebx=00000000 ecx=02f2fb40 edx=7e15c6d0 esi=7e3fc0d0 edi=02f2e76c
2362.553:0120:0138:trace:seh:handle_syscall_fault  ebp=fe092b00 esp=02f2e6a0 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00010202
2362.553:0120:0138:warn:seh:handle_syscall_fault backtrace: --- Exception 0xc0000005 at 0xe9a63fa8: /lib/i386-linux-gnu/libnvidia-glcore.so.545.29.06 + 0xe63fa8.
2362.553:0120:0138:trace:seh:handle_syscall_fault returning to user mode ip=785db575 ret=c0000005
2362.553:0120:0138:err:msvcrt:_wassert (L"!status && \"vkCreateDescriptorPool\"",L"../src-wine/dlls/winevulkan/loader_thunks.c",2841)
2362.553:0120:0138:trace:seh:raise (22)

I’ve launched the game under the debugger so I can pause it at the point of the crash. When the crash happens, Resident Memory is 1.9GB and Virtual Memory is 4.3GB. So I see two issues:

  1. Even aside from the crash, the 1.9GB of Resident Memory on Linux is more than 3x the 600MB used on Windows with an even higher setting. Why is Linux using so much more memory? Is this is a known issue with Wine/Proton?
  2. The 4.3GB of Virtual Memory is almost the entire 32-bit address space. I’m interpreting that to mean more than half the address space is reserved but unused. Maybe it has something to do with how Wine works, I don’t know. But increasing draw distance increases memory usage, and the crash occurs when almost the whole 4GiB is reserved, so that’s why I suspect an out-of-memory issue. Maybe the segfault occurs because some allocation attempt is returning a null pointer which the driver then attempts to dereference. I’m hoping someone more familiar with Linux and/or Wine memory management can tell me if that’s plausible?

My specs:

  • OS: Ubuntu 23.10
  • CPU: i9-13900K
  • GPU: RTX 4090
  • RAM: 32GB DDR5
  • Driver: NVIDIA 545 (I also tried 535, which had the same issue)