<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/147309>147309</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            A few flang OpenMP tests are flaky on Windows on Arm
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            flang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          DavidSpickett
      </td>
    </tr>
</table>

<pre>
    Lately Linaro has been seeing these 3 test cases fail on our Windows On Arm Flang bot:
flang/test/Parser/OpenMP/declare-reduction-operator.f90
flang/test/Semantics/OpenMP/loop-association.f90
flang/test/Lower/OpenMP/wsloop-reduction-logical-kinds.f90

All failures have traceback like this:
```
c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe -fc1 -emit-hlfir -fopenmp -o - C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\llvm-project\flang\test\Lower\OpenMP\wsloop-reduction-logical-kinds.f90 | c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\filecheck.exe C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\llvm-project\flang\test\Lower\OpenMP\wsloop-reduction-logical-kinds.f90
# executed command: 'c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe' -fc1 -emit-hlfir -fopenmp -o - 'C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\llvm-project\flang\test\Lower\OpenMP\wsloop-reduction-logical-kinds.f90'
# .---command stderr------------
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
# | Stack dump:
# | 0.  Program arguments: c:\\users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\bin\\flang.exe -fc1 -emit-hlfir -fopenmp -o - C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\llvm-project\\flang\\test\\Lower\\OpenMP\\wsloop-reduction-logical-kinds.f90
# | Exception Code: 0xC0000005
# |  #0 0x00007ff7f07e2c10 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a92c10)
# |  #1 0x00007ff7f07e08f8 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a908f8)
# |  #2 0x00007ff7f07de78c (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a8e78c)
# |  #3 0x00007ff7f07e44a0 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a944a0)
# |  #4 0x00007ff7f07de2f4 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a8e2f4)
# |  #5 0x00007ff7ef5fc8d8 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8ac8d8)
# |  #6 0x00007ff7ef645d38 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8f5d38)
# |  #7 0x00007ff7ef6ef17c (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x99f17c)
# |  #8 0x00007ff7ef645174 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8f5174)
# |  #9 0x00007ff7eede8ac8 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x98ac8)
# | #10 0x00007ff7eedfea90 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0xaea90)
# | #11 0x00007ff7eed534e8 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x34e8)
# | #12 0x00007ff7eed520a4 (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x20a4)
# | #13 0x00007ff7f3a10bf0 mlir::detail::FallbackTypeIDResolver::registerImplicitTypeID(class llvm::StringRef) (c:\users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x4cc0bf0)
# | #14 0xac147ff7f3a10c8c
# `-----------------------------
# error: command failed with exit status: 0xc0000005
```

```
# .---command stdout------------
# | PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
# | Stack dump:
# | 0.  Program arguments: C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\bin\\flang -fc1 -triple aarch64-pc-windows-msvc19.39.33523 -fsyntax-only -mrelocation-model pic -pic-level 2 -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon --dependent-lib=clang_rt.builtins-aarch64.lib -D_MT --dependent-lib=libcmt --dependent-lib=flang_rt.runtime.static.lib -D_MSC_VER=1939 -D_MSC_FULL_VER=193933523 -D_WIN32 -D_M_ARM64=1 -fopenmp -resource-dir C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\lib\\clang\\21 -mframe-pointer=none -x f95 C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\llvm-project\\flang\\test\\Semantics\\OpenMP\\loop-association.f90
# | Exception Code: 0xC0000005
# |  #0 0x00007ff6c5f22c34 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a92c34)
# |  #1 0x00007ff6c5f2091c (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a9091c)
# |  #2 0x00007ff6c5f22150 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a92150)
# |  #3 0x00007ff6c5f21858 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a91858)
# |  #4 0x00007ff6c5f20db8 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a90db8)
# |  #5 0x00007ff6c5f24734 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a94734)
# |  #6 0x00007ff6c5f1e318 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x1a8e318)
# |  #7 0x00007ff6c4d3c840 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8ac840)
# |  #8 0x00007ff6c4d85ca0 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8f5ca0)
# |  #9 0x00007ff6c4e2eb5c (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x99eb5c)
# | #10 0x00007ff6c4d850dc (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x8f50dc)
# | #11 0x00007ff6c4528ac8 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x98ac8)
# | #12 0x00007ff6c453ea90 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0xaea90)
# | #13 0x00007ff6c44934e8 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x34e8)
# | #14 0x00007ff6c44920a4 (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x20a4)
# | #15 0x00007ff6c9151648 mlir::detail::FallbackTypeIDResolver::registerImplicitTypeID(class llvm::StringRef) (C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build\bin\flang.exe+0x4cc1648)
# | #16 0x1d627ff6c91516e4
```

Error code 0xc0000005 is unauthorised access to memory, aka could be anything.

I tried symbolising one of the backtraces and it claimed that all the entries are `mlir::detail::FallbackTypeIDResolver::registerImplicitTypeID`:
```
PS C:\Users\tcwg\llvm-worker\flang-arm64-windows-msvc\build> .\bin\llvm-symbolizer --obj=c:\\users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\bin\\flang.exe 0x00007ff643282c7c 0x00007ff643280964 0x00007ff64327e7f8 0x00007ff64328450c 0x00007ff64327e360 0x00007ff64209c808 0x00007ff6420e5c68 0x00007ff64218eb24 0x00007ff6420e50a4 0x00007ff641888ac8 0x00007ff64189ea90 0x00007ff6417f34e8 0x00007ff6417f20a4 0x00007ff6464b0d98 0x755e7ff6464b0e34
mlir::detail::FallbackTypeIDResolver::registerImplicitTypeID(class llvm::StringRef)
??:0:0
<...>
mlir::detail::FallbackTypeIDResolver::registerImplicitTypeID(class llvm::StringRef)
??:0:0
```
Which if true suggests stack exhaustion from reccursion.

I enabled Windows error reporting and got a minidump file for it but that gave me very little stack trace. Just one frame in a system DLL and then unknown. I tried doing the same by running flang with procmon, but same result.

One of the tests does have a thing that is unsupported on Windows (or at all?):
```
while (& { c:\\users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\bin\\flang.exe -fopenmp C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\llvm-project\\flang\\test\\Parser\\OpenMP\\declare-reduction-operator.f90 }) {}
error: loc("C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\llvm-project\\flang\\test\\Parser\\OpenMP\\declare-reduction-operator.f90":4:1): C:/Users/tcwg/llvm-worker/flang-arm64-windows-msvc/llvm-project/flang/lib/Lower/OpenMP/OpenMP.cpp:3394: not yet implemented: OpenMPDeclareReductionConstruct
LLVM ERROR: aborting
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\bin\\flang -fc1 -triple aarch64-pc-windows-msvc19.39.33523 -emit-obj -fcolor-diagnostics -mrelocation-model pic -pic-level 2 -target-cpu generic -target-feature +v8a -target-feature +fp-armv8 -target-feature +neon --dependent-lib=clang_rt.builtins-aarch64.lib -D_MT --dependent-lib=libcmt --dependent-lib=flang_rt.runtime.static.lib -D_MSC_VER=1939 -D_MSC_FULL_VER=193933523 -D_WIN32 -D_M_ARM64=1 -fopenmp -resource-dir C:\\Users\\tcwg\\llvm-worker\\flang-arm64-windows-msvc\\build\\lib\\clang\\21 -mframe-pointer=none -o C:\\Users\\tcwg\\AppData\\Local\\Temp\\declare-reduction-operator-ed3e2f.o -x f95 C:\\\\Users\\\\tcwg\\\\llvm-worker\\\\flang-arm64-windows-msvc\\\\llvm-project\\\\flang\\\\test\\\\Parser\\\\OpenMP\\\\declare-reduction-operator.f90
```
But setting the triple to another target like Linux, where this test is stable, makes no difference. Which makes sense because this parsing operation should be the same everywhere.

Hammering the test on Linux didn't produce any failures, but that does not mean that it's not UB that Linux avoids or is ok with.

I tried building a debug flang but:
```
lib\FortranEvaluate.lib : fatal error LNK1248: image size (101DA06E9) exceeds maximum allowable size (FFFFFFFF)
[13/2953] Building CXX object tools\clang\lib\St...clangStaticAnalyzerCore.dir\ProgramState.cpp.obj
ninja: build stopped: subcommand failed.
```
So now I am trying RelWithDebInfo, in the hopes of a proper backtrace to see if it is reccursion.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsWt9zo7iy_mvISxcUCDDwkAfHjuvOvZmdqWR3Z9-mhGhsTYRESSI_9q-_JYET_8hk9uysM7vnHFdScYRQf91qNd8nRI3ha4l4HuQXQb48o4PdKH2-pHe8uek5u0Vrz2rVPJ5fUYviEa64pFrBhhqoESUYRC7XYDdoEFKwaCwwatBAS7kAJUENGj5x2ah7Ax8kzHUHK0HlGmplg3QexPPW_RuQlbs5IKuPVBvUAVl96FG-_xiQVYNMUI2hxmZglisZqh41tUpHbRUfj3CDHZWWM7M7iFCqD6kxinHqxnj51it1v2_73vgbn00LteaMivCWy8ZMgwTxfC6Ed3nQaGBD7xCspgxrym5B8FsEu-Fm9DeYxdNPPGeuKV8MBrUJ8oVl9-sgXwhx14X3St-iDvKFhxhS3c2y8H6MZNiZOxbki3rgonF_udx2jPABIWxZAiF23IYb0XINYat6lF0PoYIQFqPVX_6kVd-x1-oLMrvt6YZxIcwXYwjzxRTCfPHtEEJQLOCvDQUXyDbIbn04_m7-uiQgKeADssFiA0x1HZVNkM4hIMVpciIgxbfSIiDF3y5SpJiCFYVhOMUJjG1Q63DnM3VyefTx6nJ-cwlmqDtugUI9rEFjr7QFq2Bjbe_XIVkFZLXmdjPUEVOdqxDibvvnyQey4sYM6CoJOMtcMjE0bjUjME3NBtwK90s92sFwY926b4aun5b81B5HQVx91GqtaQdUr4cOpXVwttm_M-_P4T-agdcnYScHntLgT1SHnTT4HigHKbGTFc-JsZMbu-nxr6wlF93LB4a96wUL1aCLavywiP0n3-kGAUljiB9ce9G2RRsXSFgSQ0DKU629i_ghoZWzEpDqAEtygCUu2_L0WJyVYyxkH0uDRclOjqV0Vo6xpAdxyTL6BnPkrBxjyQ7jQtrsDeJC2uwYS76DBdu8ZWVz6nwpqTNyDGW2B2WW5U16ciitM3IMpdiHgm1SnDpzq8oZOYZSHkYlKU6dLGXrjBxDqXahYINuIk8dFWdjH4krcvE-khZpderVTJ2NYyTJPpI8zfDUMXEmjoGQAyAkpqfOE2fiGMhepU1pEtdtDJ3g2gFJ5w1aysX4fUWFcJTn58ce3y2v0Shxh1M_jWtuLOp3XS8443bs4xwS1Bjw_Mp3vLGay_U1tgGpTuxwxpjz5thnV9EpS7Inn1nJtl1mcfjaZ0vftVbac7eJljr9hw3cc7sBfOAWjKV2MCMRYTtEZEcAHv57zHTVYP-tmO5fSy-_ynQnlms17wUCpZptZlnYs70xkipKqyhNc5JC2JpHaelDqKR4hLDTKBTzWwVhpxoU0HMGYc9ZKPAOBRAILdVrtCHrB1ijRO06TG0tUjtohIBc3JX0pea2d07dlS9dk6gkhGGDPcoGpQ0Fr4N0yZxjn7WNnNeWSxNOfkWC1xAuP7__-YW7BK9ZZ1-40G6H04O0vMPI5StnT4PdLD7_enkdpMukSqtty-qXq6ud5il2y8-f3v2UEt_p8_z6_Sxz13eEhUajBs0wbLg-XQo4v_wX9qwxSAJh12raYdgrLq2rVkupJEL4AG2V_xi987xHdaR5vrJT9X0qZ8bylhCW-gfMd6r8b6qc9AUmkhxgiauEnR6Ls_KqyhnjkuTxG8QlyV9QFukBlqTMy9NjcVZeVTnjHDX1G2BxVl5VOR5LVrxF7jorr8ochyXBNDl9XEpn5VWdM2NZk7IyO3XuOkKfvZC65T6UMmf05FBaZ-RVnTNjGRKs81NXl6pyRl4VOmNU4ubUUMrWGXlV6cxYlpOt-jtlVF5Wf2QfSbpVfydE8hX1t1dvs6zaqr8TInlZ_WUHQLbq74RAXlZ_e5W2SvJklpVvqf5O6HDGmPPm2GdX0ZNmRp59xuxYmV06hQdMNbgj4IAbGOT4ppQbbIAyhsY4ydVhp_RjQBZAbykwNYgGagQqH-2Gy3U0jvoOrObYgHnsaiW44XINjo6q1outJ5llRh1mgQnKO2zAbqgFKoTvhtKNYoA6xTCL_7L5msXHbyk_3nzvK7RxktJLiJ5myt87xeB31BCGqv7iRM4bvgl5TvwsJSVhBTtoiqtZtt9UYNGWB72yPGaHvdLZ7oMgI3HFyrjcb8KczfabkhJrkh32cpVhpykpS1_J95oqX1J3m4rW17b9JnIw1iyr46ZyvYo8x6cmTN1yeKMi4LItXfmfeex_XcMiiqIgvfzBMHZWwacNZxvgLVg9IJhhvUZjDRi_A4IPGzoYL8tarTrQyNigjZNv21WPktYCm6fTEH7_aNqwcTXArfa1skCh45I3Q9dDywVCq7SrAvVgxwqwpncIHcId6kcQ3FqBE4hxdwb-dzDWVxSveoFLoGAejcUOlldX3o7doIRB3kp1LyPYVqRGTYc5wLgb60fQg5SubdxS8TtbvVasU9JVOQfJ99RoBmEnTz881zLrI9So7ZkICr4Qjn74OmqG3vmPDSj5FJmAlErDWOzcfJDquCbdb1xsAlIGZAZBcfHGb1CnfY0fsncwnZA52jh4_ZwMBMXSP3GLC_ctnj_tXwrFfBzJP8ibgJAgnWdBOk_G9BingqxG5GTlYU97nBNmsvoq4KPN0O25IMHrl44FjV8i1vdBOk_TygEBqSw8ogXe9QI7lBb9kY6x73J053rrzUJJY_XAbBDPr65-fQ-X19cfrl1_Wo8FwT14f-AO7-HObhyB__yzNnX9KQdVf3F3KqF02HC6lspYzsx_N3n_EzZ51beQzPt-SS3dnkNhVIxff8au_1YpCrFJkbSROt5MPrJ4aPcrcfgj0fhagT0qs4fF9rjkHhfeP1R-9x_GF44IoLVb-jAtUKuASmU3qGFM__Eo5BWXw4PjD_cb1OPJyPHkKPdsqhboLnb0Fg1IBQ1vW9QoHbUZOdh4yaA0CDUyOphplJ7qUU55qI6Mmc1WhT3RGnTEyZueCMv_0K5D_YQdPXsaUULDGxmQwjra0wzMi7mng55bDuTpjGc57hHQIZUTw7EBKcbGXy7GpnFUeqd4Y8AROwPq1hOrA3XoE97TQmjQ1f2xANaDPeZC44pYKW01lZd3VAzUol_hrja31FIxsc2rn_4vIVnpmnlH1wiG_-5ZVBIny3k8u6wcRcAHhtgY6OgD74bO0TB17-blqftq-ky0Ob9I0oCsSJWnQb6Eiy32xW-_gapdfoJVSpidRTtivrFRFPmmG1-W5pKKx99RL5TGqOEuR6fnjbuO7oEbOZkYzyWXX6jzwwcKjFV9Pz5vzVDvv5GNDsJ1o0Cqe3gHtAOrHx3QaxSfuN0ssX4nW-XmlUufDRvVo3F0lroM6FE_PyRdehtEpwi4z90dzn_WnKdNlVb0DM-TIk_KqiyS6mxzHtclqWdpTLMmrrM6TsqkTeu4qEkbs6JmZ_ycxCSPi7hIsjTJq4iQtC0amiSzvCRVyoIsxo5yEbnlHym9PvOP9fMkK9K4OhO0RmH8gW5CJhZDgnx5ps99vaiHtQmyWHBjzfMQlluB53No8X5KtLEiTAyeanTNt4-7LF3509xngxbnf56JTKjvzsn_BwAA__9X8pFs">