https://bugs.freedesktop.org/show_bug.cgi?id=101927
Bug ID: 101927 Summary: American Conquest via Wine cannot start Product: Mesa Version: 17.1 Hardware: Other OS: All Status: NEW Severity: normal Priority: medium Component: Drivers/Gallium/radeonsi Assignee: dri-devel@lists.freedesktop.org Reporter: aaalmosss@gmail.com QA Contact: dri-devel@lists.freedesktop.org
This is what I get:
$ LIBGL_DEBUG=verbose wine DMCR.EXE libGL: pci id for fd 15: 1002:6810, driver radeonsi libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/radeonsi_dri.so libGL: dlopen /usr/lib/i386-linux-gnu/dri/radeonsi_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/radeonsi_dri.so libGL: dlopen ${ORIGIN}/dri/radeonsi_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying /usr/lib/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying /usr/lib/dri/radeonsi_dri.so libGL: dlopen /usr/lib/dri/radeonsi_dri.so failed (/usr/lib/dri/radeonsi_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: radeonsi_dri.so libGL error: driver pointer missing libGL error: failed to load driver: radeonsi libGL: pci id for fd 15: 1002:6810, driver radeonsi libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/radeonsi_dri.so libGL: dlopen /usr/lib/i386-linux-gnu/dri/radeonsi_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/radeonsi_dri.so libGL: dlopen ${ORIGIN}/dri/radeonsi_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying /usr/lib/dri/tls/radeonsi_dri.so libGL: OpenDriver: trying /usr/lib/dri/radeonsi_dri.so libGL: dlopen /usr/lib/dri/radeonsi_dri.so failed (/usr/lib/dri/radeonsi_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: radeonsi_dri.so libGL error: driver pointer missing libGL error: failed to load driver: radeonsi libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/i386-linux-gnu/dri/swrast_dri.so libGL: dlopen /usr/lib/i386-linux-gnu/dri/swrast_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/swrast_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/swrast_dri.so libGL: dlopen ${ORIGIN}/dri/swrast_dri.so failed (libLLVM-4.0.so.1: failed to map segment from shared object) libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so libGL: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request: BadValue (integer parameter out of range for operation) Major opcode of failed request: 156 (GLX) Minor opcode of failed request: 3 (X_GLXCreateContext) Value in failed request: 0x0 Serial number of failed request: 169 Current serial number in output stream: 173
Cossacks, which uses the same engine, doesn't have this problem. I tried to compile Mesa with statically linked LLVM, but "--disable-llvm-shared-libs" has no effect.
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #1 from Emil Velikov emil.l.velikov@gmail.com --- Just sharing some ideas, I likely won't be able to help much.
Possible issues include: - file is not there, has wrong permissions, is corrupted - map fails due to wrong permissions of the segment, OOM conditions
strace should help narrowing it down.
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #2 from almos aaalmosss@gmail.com --- There is nothing wrong with libLLVM-4.0.so.1 as far as I can tell. Only American Conquest throws this error, so there must be something special about this one exe.
I compiled Mesa without LLVM, so I could try it with softpipe. I get no dlopen error, but the X error remains. Here is what I have managed to debug so far: - Wine creates a GLX context to query the OpenGL information, destroys it, and creates a permanent one for GDI drawing; the error happens for the second one - In softpipe_create_context() the CALLOC_STRUCT() fails for sp_create_tex_tile_cache() (always at sh=4 and i=28...30), I have no idea why - In CreateContext() (mesa/src/glx/glxcmds.c:278) psc->vtable->create_context() fails because of the previous point, and indirect_create_context() is attempted - The X server rejects indirect contexts (xserver/glx/glxcmds.c:284), hence the X error
The hard part is that gdb doesn't work on Wine, and winedbg is mostly useless.
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #3 from Roland Scheidegger sroland@vmware.com --- Sounds to me like you're simply running out of (virtual) memory. Those allocations in softpipe are quite a waste of memory, albeit not THAT big (each tile is 32x32 pixels, at 16 bytes, so 16kB, and there's 16 tiles per shader type and per sampler view - with 6 shader types and 32 sampler views that adds up to (typically mostly never used...) 48MB. That's probably also the reason why the map fails with radeonsi. I have no idea though where all your virtual memory address space went, but I don't see any evidence it's really related to mesa, albeit there recently was a new and already fixed memory leak.
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #4 from almos aaalmosss@gmail.com --- I ran wine with strace, gathered the relevant syscalls (mmap, mmap2, munmap), and wrote a program to visualize the memory usage: the 1024x1024 pixels each represent a 4096 byte page, black is unallocated, green is allocated with position hint, blue is allocated with NULL hint, yellow is unmapped.
I'll attach the results for American Conquest (up until the failed mmap for libLLVM.so), and Cossacks European Wars (I killed it when the main menu appeared). There are plenty of free space left in both cases. Can this be a glitch in the kernel's memory allocator? How can I debug that?
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #5 from almos aaalmosss@gmail.com --- Created attachment 133581 --> https://bugs.freedesktop.org/attachment.cgi?id=133581&action=edit memap_ac.png
https://bugs.freedesktop.org/show_bug.cgi?id=101927
--- Comment #6 from almos aaalmosss@gmail.com --- Created attachment 133582 --> https://bugs.freedesktop.org/attachment.cgi?id=133582&action=edit memmap_cossacks.png
https://bugs.freedesktop.org/show_bug.cgi?id=101927
Timothy Arceri t_arceri@yahoo.com.au changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|dri-devel@lists.freedesktop |mesa-dev@lists.freedesktop. |.org |org QA Contact|dri-devel@lists.freedesktop |mesa-dev@lists.freedesktop. |.org |org Version|17.1 |18.2 Component|Drivers/Gallium/radeonsi |Mesa core
--- Comment #7 from Timothy Arceri t_arceri@yahoo.com.au --- On i965 I get:
XIO: fatal IO error 12 (Cannot allocate memory) on X server ":0" after 273 requests (273 known processed) with 0 events remaining.
I suspect this is a wine or game bug but for now reassigning to Mesa Core.
dri-devel@lists.freedesktop.org