https://bugs.winehq.org/show_bug.cgi?id=52187
Bug ID: 52187 Summary: wine-mono's WPF tests hang Product: Wine Version: 6.23 Hardware: x86-64 OS: Linux Status: NEW Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: madewokherd@gmail.com Distribution: ---
The test WineMono.Tests.System.Windows.Media.TextFormatting.TextFormatterTest:IndentTest hangs on current Wine.
It seems it gets in a loop where dwritetextanalyzer_AnalyzeLineBreakpoints requests data past the end of the range provided by the source, and the source returns 0-length text.
This is our implementation of GetTextAtPosition: https://github.com/madewokherd/wpf/blob/main/src/Microsoft.DotNet.Wpf/src/Di...
Print statement debugging shows that the "else" path is being taken in that function, but on the dwrite side checking for a length of 0 works around the hang.
Bisecting gave me this:
909f7aa7c21f82114586e98a0a9e940b13bc386a is the first bad commit commit 909f7aa7c21f82114586e98a0a9e940b13bc386a Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Dec 2 15:37:19 2021 +0300
dwrite: Use CRT allocation functions.
Nothing in that commit should change the behavior. I double-checked the result, and it's consistent. I tried running with WINEDEBUG=warn+heap, both before and after the bad commit, and that didn't change the behavior or print any warnings while the test process was running.
Leaving component unknown because it's not clear to me that dwrite is doing anything wrong.