https://bugs.winehq.org/show_bug.cgi?id=37239
--- Comment #3 from Sebastian Lackner sebastian@fds-team.de --- As it turns out this issue is not limited to importing video files. It can also be reproduced when trying to view the "About" dialog under "Help".
Relevant lines from the log:
--- snip --- 683395.680:002c:Call ntdll.RtlEnterCriticalSection(107cdd90) ret=037d194b 683395.680:002c:Ret ntdll.RtlEnterCriticalSection() retval=00000000 ret=037d194b [...] 683395.765:002c:Call glu32.gluNewTess() ret=0616b97b 683395.788:002c:Call ntdll.RtlAllocateHeap(00110000,00000008,00000038) ret=f6636a6b 683395.788:002c:Ret ntdll.RtlAllocateHeap() retval=135efc68 ret=f6636a6b 683395.788:002c:Ret glu32.gluNewTess() retval=135efc68 ret=0616b97b 683395.788:002c:Call glu32.gluTessProperty(135efc68,0001872c,00000000,40f87230) ret=0616b994 683395.788:002c:Ret glu32.gluTessProperty() retval=00018723 ret=0616b994 683395.788:002c:Call glu32.gluTessCallback(135efc68,00018704,0616b830) ret=0616b9a4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636b91 ret=0616b9a4 683395.788:002c:Call glu32.gluTessCallback(135efc68,00018708,0616b840) ret=0616b9b4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636c79 ret=0616b9b4 683395.788:002c:Call glu32.gluTessCallback(135efc68,0001870b,0616b8e0) ret=0616b9c4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636bce ret=0616b9c4 683395.788:002c:Call glu32.gluTessCallback(135efc68,00018706,0616b850) ret=0616b9d4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636c0b ret=0616b9d4 683395.788:002c:Call glu32.gluTessCallback(135efc68,00018707,0616b860) ret=0616b9e4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636c3c ret=0616b9e4 683395.788:002c:Call glu32.gluTessCallback(135efc68,0001870f,0616b870) ret=0616b9f4 683395.788:002c:Ret glu32.gluTessCallback() retval=f6636cb6 ret=0616b9f4 683395.788:002c:Call glu32.gluBeginPolygon(135efc68) ret=0616ba04 (last line from thread 002c) [...] 683395.804:002f:Call ntdll.RtlEnterCriticalSection(107cdd90) ret=037d194b [...] 683400.821:002f:err:ntdll:RtlpWaitForCriticalSection section 0x107cdd90 "?" wait timed out in thread 002f, blocked by 002c, retrying (60 sec) --- snip ---
The issue is that the application passes a pointer generated with gluNewTess() to gluBeginPolygon(). All *Tess* functions internally use some wrapper structures to avoid calling convention issues, but two functions (gluBeginPolygon/gluEndPolygon) don't do that by accident. Passing the invalid pointers to glu causes the deadlock. I'll attach a patch which fixes the issue, nevertheless it still seems to deadlock somewhere else? Will try to debug this a bit further, it could also be an issue with my patch.