https://bugs.winehq.org/show_bug.cgi?id=51139
ms mst.misc@arcor.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |bunglehead@gmail.com, | |conmanx360@gmail.com, | |hverbeet@gmail.com, | |mst.misc@arcor.de
--- Comment #9 from ms mst.misc@arcor.de --- the crash or hang is in d2d1.dll.
with Fedora 34's Wine 6.13 this crash occurs by stack overflow: 0104:err:virtual:virtual_setup_exception stack overflow 1220 bytes in thread 0104 addr 0x219dedc2 stack 0x1df0b3c (0x1df0000-0x1df1000-0x1ef0000
haven't had any luck with winedbg, it doesn't show any debuginfo.
building current master 04d52eb83fa5c37cfe1100f435e36c2f78918338 and then linking the new d2d1.dll into /usr, some added debug tracing in geometry.c helped to pin down the problem.
oddly enough, the problem manifests as an infinite loop now, not a stack overflow any more, probably because of different optimization flags.
in d2d_geometry_resolve_beziers() the innermost of 3 while loops never terminates, because there's a point that has x and y both NaN.
the NaN was created in d2d_geometry_add_bezier_line_intersections() because "t" is NaN because it's created by dividing 0 by 0.
unfortunately am rather clueless about graphics, so have only found a workaround "if (isnan(t)) {return TRUE;}" that prevents the crash, the resulting images are obviously wrong as most of the text is missing.