Crash on winecheck.exe reproduce command: ``` FEXLoader ./wine-1.6/bin/wine ~/Downloads/ogl/winecheck.exe fixme:winediag:start_process Wine Staging 1.9.7 is a testing version containing experimental patches. fixme:winediag:start_process Please mention your exact version when filing bug reports on winehq.org. Checking OpenGL ... OpenGL Vendor: X.Org OpenGL Renderer: AMD OLAND (DRM 2.50.0 / 5.15.0, LLVM 6.0.0) OpenGL Direct Rendering: True OpenGL: PASSED Checking fonts ... Found Arial in wine\fonts\Arial.ttf Found Arial in wine\fonts\Arial_Bold.ttf Found Arial in wine\fonts\Arial_Bold_Italic.ttf Found Arial in wine\fonts\Arial_Italic.ttf Found Verdana in wine\fonts\Verdana.ttf Found Verdana in wine\fonts\Verdana_Bold.ttf Found Verdana in wine\fonts\Verdana_Bold_Italic.ttf Found Verdana in wine\fonts\Verdana_Italic.ttf Fonts: PASSED Checking ACLs / XATTR ... ACLs: PASSED Segmentation fault (core dumped) ``` winecheck.exe source code: https://github.com/keithbowes/pipelight/blob/40dbef17afd4d559f7e923e4970c2468fd30c83b/src/windows/winecheck/check.c Desc: it seems if winecheck invoke checkOpenGL function ,then wine will crash on random point near main function exit. and crash chance is not 100%, below 50%. https://github.com/keithbowes/pipelight/blob/40dbef17afd4d559f7e923e4970c2468fd30c83b/src/windows/winecheck/check.c#L509 ``` crash stack: Process 12348 stopped * thread #3, name = 'radeon_cs:0', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 thread #6, name = 'si_shader:2', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 thread #8, name = 'si_shader_low:1', stop reason = signal SIGSEGV: address access protected (fault address: 0x2f5cfd800) frame #0: 0x0000ffffa5832060 libc.so.6`__GI___pthread_mutex_unlock_usercnt at pthread_mutex_unlock.c:40:30 (lldb) bt * thread #3, name = 'radeon_cs:0', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 (lldb) bt * thread #3, name = 'radeon_cs:0', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 (lldb) thread list Process 12348 stopped thread #1: tid = 12348, 0x0000ffffa5887910 libc.so.6`__libc_open64(file="/home/bogus/.fex-emu/Telemetry/winecheck.exe.telem.1", oflag=) at open64.c:41:10, name = 'winecheck.exe' * thread #3: tid = 12473, 0x0000000000000000, name = 'radeon_cs:0', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) thread #6: tid = 12476, 0x0000000000000000, name = 'si_shader:2', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) thread #8: tid = 12478, 0x0000ffffa5832060 libc.so.6`__GI___pthread_mutex_unlock_usercnt at pthread_mutex_unlock.c:40:30, name = 'si_shader_low:1', stop reason = signal SIGSEGV: address access protected (fault address: 0x2f5cfd800) (lldb) t 6 * thread #6, name = 'si_shader:2', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) frame #0: 0x0000000000000000 error: memory read failed for 0x0 (lldb) bt * thread #6, name = 'si_shader:2', stop reason = signal SIGSEGV: invalid address (fault address: 0x0) * frame #0: 0x0000000000000000 (lldb) ``` I add debug info in RADEON_Handler, but near the main exit point, it not invoke RADEON_Handler. One thread show it's name is radeon_cs, it's a ioctl cmd ``` struct drm_radeon_cs { __u32 num_chunks; __u32 cs_id; /* this points to __u64 * which point to cs chunks */ __u64 chunks; /* updates to the limits after this CS ioctl */ __u64 gart_limit; __u64 vram_limit; }; ``` I think the crash relation with openGL. But I don't know how to analysis this problem.