* Mesa (32 bit under 64 os) from git built with llvm 3.0 * Radeon HD 4850 * Last wine version Mesa is built with llvm 3.0, the bug doesn't seem to occur with llvm 2.9 Here is the output: [lordh@archMain FurMark_1.9.2]$ wine FurMark.exe err:module:load_builtin_dll failed to load .so lib for builtin L"winemp3.acm": libmpg123.so.0: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type fixme:heap:HeapSetInformation (nil) 1 (nil) 0 fixme:win:EnumDisplayDevicesW ((null),0,0x33eaf0,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3b0): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0x33e4c4,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),1,0x33e4c4,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),0,0x33ec98,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3cc): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0xf0e28c,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x710): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) draw/draw_llvm.c:160:create_jit_texture_type: Assertion `LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_DATA) == __builtin_offsetof (struct draw_jit_texture, data)' failed. wine: Unhandled exception 0x80000003 at address 0x7cb9cfea (thread 0025), starting debugger... fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:compute_location Only supporting one breg (ecx/18 -> eax/17) fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9e fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d _debug_assert_fail () at /build/src/build/src/gallium/auxiliary/util/u_debug.c:278 0x7cb9cfea _debug_assert_fail+0x57 [/build/src/build/src/gallium/auxiliary/util/u_debug.c:278] in r600_dri.so: int $3 Unable to access file '/build/src/build/src/gallium/auxiliary/util/u_debug.c' Modules: Module Address Debug info Name (91 modules) PE 400000- 7db000 Deferred furmark PE 7e0000- 9c5000 Deferred freeimage PE 10000000-1022e000 Deferred core3d ELF 7b800000-7b9c4000 Deferred kernel32<elf> \-PE 7b810000-7b9c4000 \ kernel32 ELF 7bc00000-7bcd2000 Deferred ntdll<elf> \-PE 7bc10000-7bcd2000 \ ntdll ELF 7bdc5000-7be00000 Deferred usp10<elf> \-PE 7bdd0000-7be00000 \ usp10 ELF 7bf00000-7bf04000 Deferred <wine-loader> ELF 7c2d9000-7c400000 Deferred libglsl.so ELF 7c4b7000-7c742000 Deferred libdricore.so ELF 7c77d000-7db57000 Dwarf r600_dri.so ELF 7db57000-7db8d000 Deferred uxtheme<elf> \-PE 7db60000-7db8d000 \ uxtheme ELF 7dc2f000-7dc58000 Deferred libexpat.so.1 ELF 7dc58000-7dc86000 Deferred libfontconfig.so.1 ELF 7dc86000-7dc96000 Deferred libxi.so.6 ELF 7dca1000-7dca6000 Deferred libtxc_dxtn.so ELF 7dca6000-7dcad000 Deferred libffi.so.5 ELF 7dcad000-7dcb8000 Deferred libxcursor.so.1 ELF 7ddd1000-7de81000 Deferred winex11<elf> \-PE 7dde0000-7de81000 \ winex11 ELF 7de81000-7df1d000 Deferred libfreetype.so.6 ELF 7df2b000-7df34000 Deferred libxrandr.so.2 ELF 7df34000-7df58000 Deferred imm32<elf> \-PE 7df40000-7df58000 \ imm32 ELF 7df58000-7df8c000 Deferred ws2_32<elf> \-PE 7df60000-7df8c000 \ ws2_32 ELF 7df8c000-7dfff000 Deferred shlwapi<elf> \-PE 7dfa0000-7dfff000 \ shlwapi ELF 7dfff000-7e22a000 Deferred shell32<elf> \-PE 7e010000-7e22a000 \ shell32 ELF 7e22a000-7e256000 Deferred msvfw32<elf> \-PE 7e230000-7e256000 \ msvfw32 ELF 7e293000-7e296000 Deferred libxcomposite.so.1 ELF 7e296000-7e29e000 Deferred libxrender.so.1 ELF 7e29e000-7e2a1000 Deferred libxinerama.so.1 ELF 7e2a1000-7e2b6000 Deferred libz.so.1 ELF 7e2b6000-7e2d9000 Deferred iphlpapi<elf> \-PE 7e2c0000-7e2d9000 \ iphlpapi ELF 7e2d9000-7e356000 Deferred rpcrt4<elf> \-PE 7e2e0000-7e356000 \ rpcrt4 ELF 7e356000-7e47d000 Deferred ole32<elf> \-PE 7e370000-7e47d000 \ ole32 ELF 7e47d000-7e526000 Deferred winmm<elf> \-PE 7e480000-7e526000 \ winmm ELF 7e526000-7e52c000 Deferred libuuid.so.1 ELF 7e52c000-7e543000 Deferred libice.so.6 ELF 7e543000-7e54a000 Deferred libsm.so.6 ELF 7e54a000-7e620000 Deferred opengl32<elf> \-PE 7e560000-7e620000 \ opengl32 ELF 7e620000-7e629000 Deferred librt.so.1 ELF 7e629000-7e62e000 Deferred libxdmcp.so.6 ELF 7e62e000-7e63b000 Deferred libdrm.so.2 ELF 7e63b000-7e653000 Deferred libxcb.so.1 ELF 7e653000-7e664000 Deferred libxcb-glx.so.0 ELF 7e664000-7e79c000 Deferred libx11.so.6 ELF 7e79c000-7e7af000 Deferred libxext.so.6 ELF 7e7af000-7e7dc000 Deferred libglapi.so.0 ELF 7e7dc000-7e7f7000 Deferred libgcc_s.so.1 ELF 7e8e0000-7e937000 Deferred libgl.so.1 ELF 7e937000-7e9a4000 Deferred libglu.so.1 ELF 7e9a5000-7e9b5000 Deferred libbz2.so.1.0 ELF 7e9b5000-7e9df000 Deferred msacm32<elf> \-PE 7e9c0000-7e9df000 \ msacm32 ELF 7ea04000-7eacd000 Deferred gdi32<elf> \-PE 7ea10000-7eacd000 \ gdi32 ELF 7eacd000-7ec1f000 Deferred user32<elf> \-PE 7eae0000-7ec1f000 \ user32 ELF 7ec1f000-7ed21000 Deferred comctl32<elf> \-PE 7ec30000-7ed21000 \ comctl32 ELF 7ed21000-7ed8a000 Deferred advapi32<elf> \-PE 7ed30000-7ed8a000 \ advapi32 ELF 7ef8a000-7ef97000 Deferred libnss_files.so.2 ELF 7ef97000-7efc5000 Deferred libm.so.6 ELF 7efc6000-7efc9000 Deferred libxau.so.6 ELF 7efc9000-7efce000 Deferred libxxf86vm.so.1 ELF 7efce000-7efe6000 Deferred glu32<elf> \-PE 7efd0000-7efe6000 \ glu32 ELF 7efe6000-7f000000 Deferred version<elf> \-PE 7eff0000-7f000000 \ version ELF f7482000-f7485000 Deferred libx11-xcb.so.1 ELF f7487000-f748c000 Deferred libdl.so.2 ELF f748c000-f762f000 Deferred libc.so.6 ELF f762f000-f764a000 Deferred libpthread.so.0 ELF f764a000-f7650000 Deferred libxfixes.so.3 ELF f7682000-f7685000 Deferred libxdamage.so.1 ELF f7685000-f77c8000 Dwarf libwine.so.1 ELF f77c9000-f77eb000 Deferred ld-linux.so.2 ELF f77eb000-f77ec000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) 00000008 (D) C:\Program Files\Geeks3D\Benchmarks\FurMark_1.9.2\FurMark.exe 00000025 0 <== 00000009 0 0000000e services.exe 0000001f 0 0000001e 0 00000019 0 00000018 0 00000017 0 00000015 0 00000010 0 0000000f 0 00000012 winedevice.exe 0000001a 0 00000014 0 00000013 0 0000001b plugplay.exe 00000020 0 0000001d 0 0000001c 0 00000021 explorer.exe 00000022 0 Backtrace: =>0 0x7cb9cfea _debug_assert_fail+0x57(expr="LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_DATA) == __builtin_offsetof (struct draw_jit_texture, data)", file="draw/draw_llvm.c", line=0xa0, function="create_jit_texture_type") [/build/src/build/src/gallium/auxiliary/util/u_debug.c:278] in r600_dri.so (0x7c2b1744) 1 0x7cc095a2 create_jit_types+0x315(llvm=0x7bbf9510) [/build/src/build/src/gallium/auxiliary/draw/draw_llvm.c:158] in r600_dri.so (0x7c2b1744) 2 0x7cc0a312 draw_llvm_generate+0x106(llvm=0x7bbf9510, variant=0x7baa3af0, elts=0) [/build/src/build/src/gallium/auxiliary/draw/draw_llvm.c:344] in r600_dri.so (0x7c285518) 3 0x7cc0cebd draw_llvm_create_variant+0x1d0(llvm=0x7bbf9510, num_inputs=0x3, key=0xf0de60) [/build/src/build/src/gallium/auxiliary/draw/draw_llvm.c:447] in r600_dri.so (0x783fc1e8) 4 0x7cc0f971 llvm_middle_end_prepare+0x326(middle=0x7c28c9a0, in_prim=0, opt=0x7, max_vertices=0x7ba6fe44) [/build/src/build/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:174] in r600_dri.so (0x00000000) draw/draw_llvm.c:163:create_jit_texture_type: Assertion `LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_MIN_LOD) == __builtin_offsetof (struct draw_jit_texture, min_lod)' failed. err:ntdll:RtlpWaitForCriticalSection section 0x7de7c2a0 "../../../wine/dlls/winex11.drv/x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0009, blocked by 0025, retrying (60 sec)
It doesn't assert with DRAW_USE_LLVM=0
...mesa-7.11.2 seem also to be affected by this bug
(In reply to comment #1) > It doesn't assert with DRAW_USE_LLVM=0 So it's an issue in the draw module, not the driver. Reassigning.
I really don't understand how this would fail for this particular program. Does it happen w/ other 32bit apps? Please modify the code to print LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_MIN_LOD) offsetof (struct draw_jit_texture, min_lod) in separate before the assertion, to see which is the odd value.
I've tried native 32 bits program like ETQW/penumbra overture/Quake 4 without problems. What is the proper way to display these values ? I've tried something like: lp_build_printf(gallivm, "LLVMOffsetOfElement=%d :: offsetof=%d\n", LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_DATA), offsetof (struct draw_jit_texture, data)); But without success: [lordh@archMain FurMark_1.9.2]$ wine FurMark.exe err:module:load_builtin_dll failed to load .so lib for builtin L"winemp3.acm": libmpg123.so.0: Ne peut ouvrir le fichier d'objet partagé: Aucun fichier ou dossier de ce type fixme:heap:HeapSetInformation (nil) 1 (nil) 0 fixme:win:EnumDisplayDevicesW ((null),0,0x33eaf0,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3b0): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0x33e4c4,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),1,0x33e4c4,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),0,0x33ec98,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3cc): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0xf0e28c,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3cc): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) wine: Unhandled page fault on read access to 0x000000a0 at address 0x7b06d024 (thread 0022), starting debugger... Unhandled exception: page fault on read access to 0x000000a0 in 32-bit code (0x7b06d024). fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:compute_location Only supporting one breg (ecx/18 -> eax/17) fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9e fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d fixme:dbghelp_dwarf:compute_location Unhandled attr op: 9d Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7b06d024 ESP:00f0d480 EBP:00f0d5c0 EFLAGS:00010216( R- -- I -A-P- ) EAX:00000098 EBX:7b572314 ECX:7d600018 EDX:7b3a7dd6 ESI:00000001 EDI:00000098 Stack dump: 0x00f0d480: 7a8db581 00000098 7c23e644 00f0d4c4 0x00f0d490: 00000002 7b3a7dd6 00000004 7d1cef14 0x00f0d4a0: 7b040767 7d1cef14 7d1ce814 00000002 0x00f0d4b0: 7d1aa6c8 7d1af868 7b3a7dd6 784ca8d0 0x00f0d4c0: 00000003 7c23aba0 7c23aba0 784cadac 0x00f0d4d0: 7b572314 7c23e5c0 784c9178 00000004 000c: sel=0067 base=00000000 limit=00000000 32-bit r-x Backtrace: =>0 0x7b06d024 LLVMTypeOf+0x4() in r600_dri.so (0x00f0d5c0) 1 0x7a8db581 lp_build_printf+0x1e9(gallivm=0x7d1a2de8, fmt=<is not available>) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/gallivm/lp_bld_printf.c:119] in r600_dri.so (0x00f0d5c0) 2 0x7a8ae2f4 create_jit_types+0x307(llvm=0x7c6c7b70) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:159] in r600_dri.so (0x7d1cef14) 3 0x7a8af5df draw_llvm_generate+0x106(llvm=0x7c6c7b70, variant=0x7c23e348, elts=0) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:358] in r600_dri.so (0x7d1a2de8) 4 0x7a8b1dad draw_llvm_create_variant+0x23c(llvm=0x7c6c7b70, num_inputs=0x3, key=0xf0de60) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:461] in r600_dri.so (0x7c239ff0) 5 0x7a8b4803 llvm_middle_end_prepare+0x2c8(middle=0x7c6d1f58, in_prim=0, opt=0x7, max_vertices=0x7c6cf484) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:162] in r600_dri.so (0x7c6d1f58) 6 0x7a822336 vsplit_prepare+0xbd(frontend=0x7c6cf468, in_prim=0, middle=0x7c6d1f58, opt=0x7) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_pt_vsplit.c:175] in r600_dri.so (0x00000000) 0x7b06d024 LLVMTypeOf+0x4 in r600_dri.so: movl 0x8(%eax),%eax Modules: Module Address Debug info Name (91 modules) PE 400000- 7db000 Deferred furmark PE 7e0000- 9c5000 Deferred freeimage PE 10000000-1022e000 Deferred core3d ELF 7a41e000-7b800000 Dwarf r600_dri.so ELF 7b800000-7b9c4000 Deferred kernel32<elf> \-PE 7b810000-7b9c4000 \ kernel32 ELF 7bc00000-7bcd2000 Deferred ntdll<elf> \-PE 7bc10000-7bcd2000 \ ntdll ELF 7bf00000-7bf04000 Deferred <wine-loader> ELF 7d7c7000-7d802000 Deferred usp10<elf> \-PE 7d7d0000-7d802000 \ usp10 ELF 7d8af000-7d8b4000 Deferred libtxc_dxtn.so ELF 7d8b4000-7d9dd000 Deferred libglsl.so ELF 7d9dd000-7dc67000 Deferred libdricore.so ELF 7dca2000-7dcad000 Deferred libxcursor.so.1 ELF 7dcb0000-7dce6000 Deferred uxtheme<elf> \-PE 7dcc0000-7dce6000 \ uxtheme ELF 7dd7a000-7dda3000 Deferred libexpat.so.1 ELF 7dda3000-7ddd1000 Deferred libfontconfig.so.1 ELF 7ddd1000-7dde1000 Deferred libxi.so.6 ELF 7dde1000-7dde8000 Deferred libffi.so.5 ELF 7de1c000-7decc000 Deferred winex11<elf> \-PE 7de30000-7decc000 \ winex11 ELF 7decc000-7dee1000 Deferred libz.so.1 ELF 7dee1000-7df7d000 Deferred libfreetype.so.6 ELF 7df80000-7df83000 Deferred libxcomposite.so.1 ELF 7df83000-7df8c000 Deferred libxrandr.so.2 ELF 7df8c000-7df94000 Deferred libxrender.so.1 ELF 7df94000-7dfb8000 Deferred imm32<elf> \-PE 7dfa0000-7dfb8000 \ imm32 ELF 7dfb8000-7dfec000 Deferred ws2_32<elf> \-PE 7dfc0000-7dfec000 \ ws2_32 ELF 7dfec000-7e05f000 Deferred shlwapi<elf> \-PE 7e000000-7e05f000 \ shlwapi ELF 7e05f000-7e28a000 Deferred shell32<elf> \-PE 7e070000-7e28a000 \ shell32 ELF 7e28a000-7e2b6000 Deferred msvfw32<elf> \-PE 7e290000-7e2b6000 \ msvfw32 ELF 7e2b6000-7e2d9000 Deferred iphlpapi<elf> \-PE 7e2c0000-7e2d9000 \ iphlpapi ELF 7e2d9000-7e356000 Deferred rpcrt4<elf> \-PE 7e2e0000-7e356000 \ rpcrt4 ELF 7e356000-7e47d000 Deferred ole32<elf> \-PE 7e370000-7e47d000 \ ole32 ELF 7e47d000-7e526000 Deferred winmm<elf> \-PE 7e480000-7e526000 \ winmm ELF 7e526000-7e52c000 Deferred libuuid.so.1 ELF 7e52c000-7e543000 Deferred libice.so.6 ELF 7e543000-7e54a000 Deferred libsm.so.6 ELF 7e54a000-7e620000 Deferred opengl32<elf> \-PE 7e560000-7e620000 \ opengl32 ELF 7e620000-7e629000 Deferred librt.so.1 ELF 7e629000-7e62e000 Deferred libxdmcp.so.6 ELF 7e62e000-7e63b000 Deferred libdrm.so.2 ELF 7e63b000-7e653000 Deferred libxcb.so.1 ELF 7e653000-7e664000 Deferred libxcb-glx.so.0 ELF 7e664000-7e79c000 Deferred libx11.so.6 ELF 7e79c000-7e7af000 Deferred libxext.so.6 ELF 7e7af000-7e7dc000 Deferred libglapi.so.0 ELF 7e7dc000-7e7f7000 Deferred libgcc_s.so.1 ELF 7e8e0000-7e937000 Deferred libgl.so.1 ELF 7e937000-7e9a4000 Deferred libglu.so.1 ELF 7e9a5000-7e9b5000 Deferred libbz2.so.1.0 ELF 7e9b5000-7e9df000 Deferred msacm32<elf> \-PE 7e9c0000-7e9df000 \ msacm32 ELF 7ea04000-7eacd000 Deferred gdi32<elf> \-PE 7ea10000-7eacd000 \ gdi32 ELF 7eacd000-7ec1f000 Deferred user32<elf> \-PE 7eae0000-7ec1f000 \ user32 ELF 7ec1f000-7ed21000 Deferred comctl32<elf> \-PE 7ec30000-7ed21000 \ comctl32 ELF 7ed21000-7ed8a000 Deferred advapi32<elf> \-PE 7ed30000-7ed8a000 \ advapi32 ELF 7ef8a000-7ef97000 Deferred libnss_files.so.2 ELF 7ef97000-7efc5000 Deferred libm.so.6 ELF 7efc6000-7efc9000 Deferred libxinerama.so.1 ELF 7efc9000-7efce000 Deferred libxxf86vm.so.1 ELF 7efce000-7efe6000 Deferred glu32<elf> \-PE 7efd0000-7efe6000 \ glu32 ELF 7efe6000-7f000000 Deferred version<elf> \-PE 7eff0000-7f000000 \ version ELF f73b1000-f73b7000 Deferred libxfixes.so.3 ELF f73b9000-f73be000 Deferred libdl.so.2 ELF f73be000-f7561000 Deferred libc.so.6 ELF f7561000-f757c000 Deferred libpthread.so.0 ELF f757d000-f7580000 Deferred libxau.so.6 ELF f75b1000-f75b4000 Deferred libx11-xcb.so.1 ELF f75b4000-f75b7000 Deferred libxdamage.so.1 ELF f75b7000-f76fa000 Dwarf libwine.so.1 ELF f76fb000-f771d000 Deferred ld-linux.so.2 ELF f771d000-f771e000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) 00000008 (D) C:\Program Files\Geeks3D\Benchmarks\FurMark_1.9.2\FurMark.exe 00000022 0 <== 00000009 0 0000000e services.exe 0000001e 0 0000001d 0 00000018 0 00000017 0 00000015 0 00000010 0 0000000f 0 00000012 winedevice.exe 00000019 0 00000014 0 00000013 0 0000001a plugplay.exe 0000001f 0 0000001c 0 0000001b 0 00000020 explorer.exe 00000021 0 Backtrace: =>0 0x7b06d024 LLVMTypeOf+0x4() in r600_dri.so (0x00f0d5c0) 1 0x7a8db581 lp_build_printf+0x1e9(gallivm=0x7d1a2de8, fmt=<is not available>) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/gallivm/lp_bld_printf.c:119] in r600_dri.so (0x00f0d5c0) 2 0x7a8ae2f4 create_jit_types+0x307(llvm=0x7c6c7b70) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:159] in r600_dri.so (0x7d1cef14) 3 0x7a8af5df draw_llvm_generate+0x106(llvm=0x7c6c7b70, variant=0x7c23e348, elts=0) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:358] in r600_dri.so (0x7d1a2de8) 4 0x7a8b1dad draw_llvm_create_variant+0x23c(llvm=0x7c6c7b70, num_inputs=0x3, key=0xf0de60) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_llvm.c:461] in r600_dri.so (0x7c239ff0) 5 0x7a8b4803 llvm_middle_end_prepare+0x2c8(middle=0x7c6d1f58, in_prim=0, opt=0x7, max_vertices=0x7c6cf484) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:162] in r600_dri.so (0x7c6d1f58) 6 0x7a822336 vsplit_prepare+0xbd(frontend=0x7c6cf468, in_prim=0, middle=0x7c6d1f58, opt=0x7) [/home/lordh/tst/lib32-mesa-git/src/build/src/gallium/auxiliary/draw/draw_pt_vsplit.c:175] in r600_dri.so (0x00000000) err:ntdll:RtlpWaitForCriticalSection section 0x7dec72a0 "../../../wine/dlls/winex11.drv/x11drv_main.c: X11DRV_CritSection" wait timed out in thread 0009, blocked by 0022, retrying (60 sec)
Although the backtrace is different, I think there are some similarities with https://bugs.freedesktop.org/show_bug.cgi?id=41791.
Created attachment 57881 [details] valgrind log on current git/svn versions Here is a valgrind log using current git/svn version
Created attachment 61718 [details] [review] patch w/ workaround attempt
Please re-try with latest master which includes commit 9af1ba565dfd5cef9ee938bb7c04767d14878fbf Author: José Fonseca <jfonseca@vmware.com> Date: Wed May 16 15:00:23 2012 +0100 draw,llvmpipe: Avoid named struct types on LLVM 3.0 and later. Starting with LLVM 3.0, named structures are meant not for debugging, but for recursive data types, previously also known as opaque types. The recursive nature of these types leads to several memory management difficulties. Given that we don't actually need recursive types, avoid them altogether. This is an attempt to address fdo bugs 41791 and 44466. The issue is somewhat random so there's no easy way to check how effective this is. And if that doesn't work, try the attached path w/ another workaround attempt.
No changes with mesa trunk: ... err:x11settings:X11DRV_ChangeDisplaySettingsEx No matching mode found 1920x1080x32 @3330900! (XRandR) fixme:win:EnumDisplayDevicesW ((null),0,0xf0e294,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3cc): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) draw/draw_llvm.c:161:create_jit_texture_type: Assertion `LLVMOffsetOfElement(target, texture_type, DRAW_JIT_TEXTURE_DATA) == __builtin_offsetof (struct draw_jit_texture, data)' failed. wine: Unhandled exception 0x80000003 at address 0x7a8fabba (thread 0035), starting debugger... fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f ... glxinfo32: OpenGL renderer string: Gallium 0.4 on AMD RV770 OpenGL version string: 2.1 Mesa 8.1-devel (git-d65bd19) OpenGL shading language version string: 1.30 Now i will test with the provided patch....
(In reply to comment #8) > Created attachment 61718 [details] [review] [review] > patch w/ workaround attempt No luck with this patch also (same error)
(In reply to comment #11) > (In reply to comment #8) > > Created attachment 61718 [details] [review] [review] [review] > > patch w/ workaround attempt > > No luck with this patch also (same error) Thanks Laurent. I think there might be a different issue than I reproduced. Please apply this change, and provide the output: diff --git a/src/gallium/auxiliary/draw/draw_llvm.c b/src/gallium/auxiliary/draw/draw_llvm.c index 4058e11..cb7c447 100644 --- a/src/gallium/auxiliary/draw/draw_llvm.c +++ b/src/gallium/auxiliary/draw/draw_llvm.c @@ -135,6 +135,11 @@ create_jit_texture_type(struct gallivm_state *gallivm, const char *struct_name) LLVMInvalidateStructLayout(gallivm->target, texture_type); #endif + +#undef LP_CHECK_MEMBER_OFFSET +#define LP_CHECK_MEMBER_OFFSET(_ctype, _cmember, _ltarget, _ltype, _lindex) \ + debug_printf("offset: %s, llvm = %u, cc = %u\n", #_ctype "." #_cmember, (unsigned)LLVMOffsetOfElement(_ltarget, _ltype, _lindex + LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width, target, texture_type, DRAW_JIT_TEXTURE_WIDTH);
(In reply to comment #12) > (In reply to comment #11) > > (In reply to comment #8) > > > Created attachment 61718 [details] [review] [review] [review] [review] > > > patch w/ workaround attempt > > > > No luck with this patch also (same error) > > Thanks Laurent. I think there might be a different issue than I reproduced. > > Please apply this change, and provide the output: > > diff --git a/src/gallium/auxiliary/draw/draw_llvm.c > b/src/gallium/auxiliary/draw/draw_llvm.c > index 4058e11..cb7c447 100644 > --- a/src/gallium/auxiliary/draw/draw_llvm.c > +++ b/src/gallium/auxiliary/draw/draw_llvm.c > @@ -135,6 +135,11 @@ create_jit_texture_type(struct gallivm_state *gallivm, > const char *struct_name) > LLVMInvalidateStructLayout(gallivm->target, texture_type); > #endif > > + > +#undef LP_CHECK_MEMBER_OFFSET > +#define LP_CHECK_MEMBER_OFFSET(_ctype, _cmember, _ltarget, _ltype, _lindex) \ > + debug_printf("offset: %s, llvm = %u, cc = %u\n", #_ctype "." #_cmember, > (unsigned)LLVMOffsetOfElement(_ltarget, _ltype, _lindex > + > LP_CHECK_MEMBER_OFFSET(struct draw_jit_texture, width, > target, texture_type, > DRAW_JIT_TEXTURE_WIDTH); Sorry, but your patch is broken, it doesn't build with it applied
Created attachment 61748 [details] [review] patch to log offsets to stderr Bugzilla munged my patch. Laurent please try the patch attached.
(In reply to comment #14) > Created attachment 61748 [details] [review] [review] > patch to log offsets to stderr > > Bugzilla munged my patch. Laurent please try the patch attached. Here is the output: err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x704): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) offset: struct vertex_header.clip, llvm = 4, cc = 4 offset: struct vertex_header.pre_clip_pos, llvm = 20, cc = 20 offset: struct vertex_header.data, llvm = 36, cc = 36 offset: struct draw_jit_texture.width, llvm = 0, cc = 0 offset: struct draw_jit_texture.height, llvm = 4, cc = 4 offset: struct draw_jit_texture.depth, llvm = 8, cc = 8 offset: struct draw_jit_texture.first_level, llvm = 12, cc = 12 offset: struct draw_jit_texture.last_level, llvm = 16, cc = 16 offset: struct draw_jit_texture.row_stride, llvm = 20, cc = 20 offset: struct draw_jit_texture.img_stride, llvm = 84, cc = 84 offset: struct draw_jit_texture.data, llvm = 152, cc = 148 offset: struct draw_jit_texture.min_lod, llvm = 280, cc = 212 offset: struct draw_jit_texture.max_lod, llvm = 284, cc = 216 offset: struct draw_jit_texture.lod_bias, llvm = 288, cc = 220 offset: struct draw_jit_texture.border_color, llvm = 292, cc = 224 draw/draw_llvm.c:182:create_jit_texture_type: Assertion `LLVMABISizeOfType(target, texture_type) == sizeof(struct draw_jit_texture)' failed. wine: Unhandled exception 0x80000003 at address 0x7a8fabba (thread 0022), starting debugger... fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f
Created attachment 61766 [details] [review] patch to dump the target data layout I suspect that when llvm is built with clang it picks up a different target data layout. Laurent, I'm attaching a patch to dump the target data layout reported by LLVM, to see in what way it differs. Please try when you have a chance.
(In reply to comment #16) > Created attachment 61766 [details] [review] [review] > patch to dump the target data layout > > I suspect that when llvm is built with clang it picks up a different target > data layout. > > Laurent, I'm attaching a patch to dump the target data layout reported by LLVM, > to see in what way it differs. Please try when you have a chance. Here with the last patch also applied: [lordh@archMain FurMark_1.9.2]$ wine FurMark.exe data_layout = e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64 fixme:heap:HeapSetInformation (nil) 1 (nil) 0 fixme:win:EnumDisplayDevicesW ((null),0,0x32eaf8,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3b0): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0x32e4cc,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),1,0x32e4cc,0x00000000), stub! fixme:win:EnumDisplayDevicesW ((null),0,0x32eca0,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x3cc): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) fixme:win:EnumDisplayDevicesW ((null),0,0xf0e294,0x00000000), stub! err:wgl:X11DRV_wglGetPixelFormatAttribivARB (0x768): unexpected iPixelFormat(0) vs nFormats(175), returns FALSE Mesa: User error: GL_INVALID_ENUM in glGetIntegerv(pname=GL_MAX_GEOMETRY_UNIFORM_COMPONENTS) offset: struct vertex_header.clip, llvm = 4, cc = 4 offset: struct vertex_header.pre_clip_pos, llvm = 20, cc = 20 offset: struct vertex_header.data, llvm = 36, cc = 36 offset: struct draw_jit_texture.width, llvm = 0, cc = 0 offset: struct draw_jit_texture.height, llvm = 4, cc = 4 offset: struct draw_jit_texture.depth, llvm = 8, cc = 8 offset: struct draw_jit_texture.first_level, llvm = 12, cc = 12 offset: struct draw_jit_texture.last_level, llvm = 16, cc = 16 offset: struct draw_jit_texture.row_stride, llvm = 20, cc = 20 offset: struct draw_jit_texture.img_stride, llvm = 84, cc = 84 offset: struct draw_jit_texture.data, llvm = 152, cc = 148 offset: struct draw_jit_texture.min_lod, llvm = 280, cc = 212 offset: struct draw_jit_texture.max_lod, llvm = 284, cc = 216 offset: struct draw_jit_texture.lod_bias, llvm = 288, cc = 220 offset: struct draw_jit_texture.border_color, llvm = 292, cc = 224 draw/draw_llvm.c:182:create_jit_texture_type: Assertion `LLVMABISizeOfType(target, texture_type) == sizeof(struct draw_jit_texture)' failed. wine: Unhandled exception 0x80000003 at address 0x7cc09f2a (thread 0022), starting debugger... fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f fixme:dbghelp_dwarf:dwarf2_lookup_type Unable to load forward reference for tag 1f
(In reply to comment #17) > e-p:64:64:64-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-f128:128:128-n8:16:32:64 I get e-p:32:32:32-S128-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f16:16:16-f32:32:32-f64:32:64-f128:128:128-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32 "p:64:64:64" signifies 64bit pointers, per http://llvm.org/docs/LangRef.html#datalayout So clang compiled execution engine is busted -- it somehow thinks it is on 64bits mode, instead of 32bits mode AFAICT, the jit engine choose 64bits vs 32bits based on the target triple, which is returned by llvm::sys::etDefaultTargetTriple/getHostTriple() functions, which is returned by LLVM_DEFAULT_TARGET_TRIPLE. My guess is that LLVM is built using clang LLVM_DEFAULT_TARGET_TRIPLE is not being defined properly (when cross compiled on 64bits, or something like that). You need to follow up on this bug with your distro or LLVM.
Created attachment 61837 [details] [review] patch to dump the default target triple This is a patch to dump the default target triple. This is what I get when running furmark in wine: Triple = i386-pc-linux-gnu
*** Bug 41791 has been marked as a duplicate of this bug. ***
(In reply to comment #19) > Created attachment 61837 [details] [review] [review] > patch to dump the default target triple > > This is a patch to dump the default target triple. > > This is what I get when running furmark in wine: > > Triple = i386-pc-linux-gnu indeed: Triple = x86_64-unknown-linux-gnu
-> Closing
(In reply to comment #21) > indeed: > Triple = x86_64-unknown-linux-gnu Thanks for confirming, Laurent, and thanks for diligently providing all info.
Oh! and thanks for your help for tracking this bug!
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.