CI Intermittent segmentation fault in Windows arm64 wheels test (vanilla CPython)

It's been seen so far (October 13) in 2 runs over 13 runs (see [scheduled Wheels runs](https://github.com/scikit-learn/scikit-learn/actions/workflows/wheels.yml?query=event%3Aschedule)):
- Python 3.12 [build log](https://github.com/scikit-learn/scikit-learn/actions/runs/18239153780/job/51938405934)
- Python 3.14 see [build log](https://github.com/scikit-learn/scikit-learn/actions/runs/18423960080/job/52502560141) from https://github.com/scikit-learn/scikit-learn/issues/32393#issuecomment-3396312539

The information is similar in both cases seems to point the finger at
```
sklearn\tree\tests\test_monotonic_tree.py", line 511 in test_nd_tree_nodes_values
```

Relevant part of the build log:
```
  tests\test_random_projection.py ........................................ [ 88%]
  ........................................................................ [ 88%]
  ........................................................................ [ 88%]
  .......................................................                  [ 88%]
  tree\tests\test_export.py ..........sssss                                [ 88%]
  tree\tests\test_monotonic_tree.py ...................................... [ 88%]
  ........................................................................ [ 89%]
  Windows fatal exception: access violation
  
  Thread 0x0000187c (most recent call first):
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 369 in wait
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\joblib\externals\loky\backend\queues.py", line 147 in _feed
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 1023 in run
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 1081 in _bootstrap_inner
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 1043 in _bootstrap
  
  Thread 0x0000067c (most recent call first):
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\multiprocessing\connection.py", line 1045 in _exhaustive_wait
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\multiprocessing\connection.py", line 1113 in wait
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\joblib\externals\loky\process_executor.py", line 681 in wait_result_broken_or_wakeup
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\joblib\externals\loky\process_executor.py", line 623 in run
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 1081 in _bootstrap_inner
    File "C:\Users\runneradmin\AppData\Local\pypa\cibuildwheel\Cache\nuget-cpython\pythonarm64.3.14.0-rc3\tools\Lib\threading.py", line 1043 in _bootstrap
  
  Current thread 0x00000730 (most recent call first):
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\sklearn\tree\_classes.py", line 475 in _fit
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\sklearn\tree\_classes.py", line 1407 in fit
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\sklearn\base.py", line 1336 in wrapper
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\sklearn\tree\tests\test_monotonic_tree.py", line 511 in test_nd_tree_nodes_values
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\python.py", line 157 in pytest_pyfunc_call
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\python.py", line 1671 in runtest
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 178 in pytest_runtest_call
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 246 in <lambda>
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 344 in from_call
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 245 in call_and_report
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 136 in runtestprotocol
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\runner.py", line 117 in pytest_runtest_protocol
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\main.py", line 367 in pytest_runtestloop
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\main.py", line 343 in _main
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\main.py", line 289 in wrap_session
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\main.py", line 336 in pytest_cmdline_main
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_callers.py", line 121 in _multicall
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_manager.py", line 120 in _hookexec
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\pluggy\_hooks.py", line 512 in __call__
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\config\__init__.py", line 175 in main
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Lib\site-packages\_pytest\config\__init__.py", line 201 in console_main
    File "C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk\cp314-win_arm64\venv-test\Scripts\pytest.exe\__main__.py", line 6 in <module>
    File "<frozen runpy>", line 88 in _run_code
    File "<frozen runpy>", line 198 in _run_module_as_main
  
  Current thread's C stack trace (most recent call first):
    <cannot get C stack on this system>
  C:\a\scikit-learn\scikit-learn/build_tools/github/test_windows_wheels.sh: line 38:   833 Segmentation fault      pytest --pyargs sklearn
  Warning: cibuildwheel: Can't delete temporary folder 'C:\Users\runneradmin\AppData\Local\Temp\cibw-run-mc25gkqk'
  
  Error: cibuildwheel: Command bash C:\a\scikit-learn\scikit-learn/build_tools/github/test_windows_wheels.sh 314 C:\a\scikit-learn\scikit-learn win_arm64 failed with code 139. 
  
  ............................::endgroup::Testing wheel...
``` 


cc @khmyznikov and @vask2108 who did the work of adding Windows arm64 wheels: https://github.com/scikit-learn/scikit-learn/pull/31867. Maybe you have seen similar things in other packages and/or you would be willing to help debug this?

COMMENT:
There's one known issue with Cython and Windows ARM: if you have sufficiently large tuple or list constants (~40 elements or more) then you can end up with the first element(s?) being wrongly initialized.

This is ultimately [an MSVC compiler bug](https://developercommunity.visualstudio.com/t/CC-Bad-code-generation-with-large-n/10952684) and we just had to disable a couple of our tests because of it - I couldn't see a non-disruptive way to work around it.

I'm not convinced that this is your issue - we found it typically just gave the wrong elements in a container rather than a crash but I'm sure you could engineer a situation where it crashes if you tried hard enough. I mention it just because it is a known issue so it's something that might be worth looking for.

I think Numpy uses clang-cl rather than MSVC for their Windows+Arm wheels. It might something to try because I expect their code-generation might be better in general (unfortunately setuptools doesn't know how to handle it - I don't know if that's a problem for you or not)

Labels: Build / CI, arch:arm, OS:Windows