Skip to content

Commit e4425bf

Browse files
committed
Capture symbolized ARM64 crash diagnostics
1 parent 44adfed commit e4425bf

3 files changed

Lines changed: 21 additions & 4 deletions

File tree

.github/workflows/windows.yml

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,7 @@ jobs:
371371
uses: actions/cache/restore@v6
372372
with:
373373
path: ${{ github.workspace }}/opencv_artifacts
374-
key: opencv-${{ env.OPENCV_VERSION }}-windows-arm64-${{ hashFiles('cmake/opencv_build_options.cmake') }}-${{ hashFiles('vcpkg.json', 'cmake/triplets/*.cmake') }}
374+
key: opencv-${{ env.OPENCV_VERSION }}-windows-arm64-${{ hashFiles('cmake/opencv_build_options.cmake') }}-${{ hashFiles('vcpkg.json', 'cmake/triplets/*.cmake') }}-z7
375375

376376
- name: Configure OpenCV
377377
if: steps.opencv-cache.outputs.cache-hit != 'true'
@@ -410,6 +410,8 @@ jobs:
410410
-D OPENCV_EXTRA_MODULES_PATH="$env:GITHUB_WORKSPACE/opencv_contrib/modules" `
411411
-D CMAKE_INSTALL_PREFIX="$env:GITHUB_WORKSPACE/opencv_artifacts" `
412412
-D WITH_FFMPEG=OFF `
413+
-D CMAKE_C_FLAGS="/Z7" `
414+
-D CMAKE_CXX_FLAGS="/Z7" `
413415
-D CMAKE_ASM_COMPILER="" `
414416
*>&1 | Tee-Object -FilePath "$env:TEMP\opencv-configure.log"
415417
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
@@ -438,7 +440,9 @@ jobs:
438440
shell: powershell
439441
run: |
440442
cmake --build opencv/build --config Release -j 4
443+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
441444
cmake --install opencv/build --config Release
445+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
442446
443447
- name: Save OpenCV cache
444448
if: steps.opencv-cache.outputs.cache-hit != 'true' && github.event_name == 'push' && github.ref == 'refs/heads/main'
@@ -460,8 +464,10 @@ jobs:
460464
-D VCPKG_TARGET_TRIPLET=arm64-windows-static `
461465
-D VCPKG_MANIFEST_INSTALL=OFF `
462466
-D "VCPKG_INSTALLED_DIR=$env:GITHUB_WORKSPACE/vcpkg_installed" `
463-
-D "VCPKG_OVERLAY_TRIPLETS=$env:GITHUB_WORKSPACE/cmake/triplets"
467+
-D "VCPKG_OVERLAY_TRIPLETS=$env:GITHUB_WORKSPACE/cmake/triplets" `
468+
-D OPENCVSHARP_BUILD_WITH_DEBUG_INFO=ON
464469
cmake --build src/build_arm64 --config Release -j 4
470+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
465471
466472
- name: Build OpenCvSharpExtern (slim)
467473
shell: powershell
@@ -494,8 +500,11 @@ jobs:
494500
if: failure()
495501
uses: actions/upload-artifact@v7
496502
with:
497-
name: windows-arm64-crash-dumps
498-
path: test/OpenCvSharp.Tests/TestResults/
503+
name: windows-arm64-crash-diagnostics
504+
path: |
505+
src/build_arm64/OpenCvSharpExtern/Release/OpenCvSharpExtern.dll
506+
src/build_arm64/OpenCvSharpExtern/Release/OpenCvSharpExtern.pdb
507+
test/OpenCvSharp.Tests/TestResults/
499508
if-no-files-found: ignore
500509

501510
- name: Pack NuGet packages

src/CMakeLists.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,18 @@ option(NO_BARCODE "Disable barcode bindings" OFF)
2929
option(NO_HIGHGUI "Disable highgui bindings" OFF)
3030
option(NO_VIDEOIO "Disable videoio bindings" OFF)
3131
option(NO_INSTALL_TO_TEST "Skip copying built DLL to the test project directory (Windows only)" OFF)
32+
option(OPENCVSHARP_BUILD_WITH_DEBUG_INFO "Generate compiler and linker symbols for MSVC diagnostics" OFF)
3233

3334
# Enable MSVC security hardening flags (issue #1841)
3435
if(MSVC)
3536
add_compile_options(/guard:cf /GS)
3637
# /HIGHENTROPYVA: enable high-entropy 64-bit ASLR
3738
add_link_options(/guard:cf /DYNAMICBASE /HIGHENTROPYVA)
39+
if(OPENCVSHARP_BUILD_WITH_DEBUG_INFO)
40+
# Embed debug information so cached static libraries remain self-contained.
41+
add_compile_options(/Z7)
42+
add_link_options(/DEBUG:FULL)
43+
endif()
3844
endif()
3945

4046
# Convert options to compile definitions so C++ preprocessor can see them

test/OpenCvSharp.Tests/ximgproc/XimgProcTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,8 @@ public void EdgeAwareInterpolator()
535535
using var toPtsMat = Mat.FromArray(toPts);
536536
using var denseFlow = new Mat();
537537

538+
// OpenCV expects K not to exceed the number of available sparse matches.
539+
interpolator.K = fromPts.Length;
538540
interpolator.Interpolate(fromImage, fromPtsMat, toImage, toPtsMat, denseFlow);
539541
Assert.False(denseFlow.Empty());
540542
}

0 commit comments

Comments
 (0)