apache / apache/arrow

[C++][FlightRPC][MSVC] Flight SQL: Potential deadlock error after C++ 20 requirement is enabled

Open
#48,714 4 comments 0 reactions 0 assignees View on GitHub
Component: C++ Component: FlightRPC Type: bug
Dominant language
C++
Stars
17.1k
Forks
4.3k
Avg merge
3d 13h
Merged PRs (30d)
88

Description

### Describe the bug, including details regarding any error messages, version, and platform.

On Windows MSVC, there are flakey mutex deadlock errors occurring in `arrow-flight-sql-test.exe` after C++ 20 is enabled https://github.com/apache/arrow/commit/30809c6f48a1a74b40dafd6bb27ac4b9aeded93e. This error impacts Arrow Flight SQL, it is is flakey and is not specific to any test.

I could not reproduce this error on MSYS2 which is the system tested in the CIs.

Log:
```
[ RUN ] TestFlightSqlServer.TestCommandGetExportedKeys
[mutex.cc : 1426] RAW: Potential Mutex deadlock:
@ 00007FFF10C00260
@ 00007FFF10BF8EB3
@ 00007FFF162DCE74
@ 00007FFF15C12C4C
@ 00007FFF15C13146
@ 00007FFF15C14144
@ 00007FFF156F8608
@ 00007FFF154CD948
@ 00007FFF154CDAB9
@ 00007FFF162E0B26
@ 00007FF84F09E8D7
@ 00007FF8500EC53C

[mutex.cc : 1438] RAW: Acquiring absl::Mutex 0000023425BC70E0 while holding 0000023425B4B560; a cycle in the historical lock ordering graph has been observed
[mutex.cc : 1439] RAW: Cycle:
[mutex.cc : 1453] RAW: mutex@0000023425BC70E0 stack:
@ 00007FFF10C00260
@ 00007FFF10BF8EB3
@ 00007FFF1539C999
@ 00007FFF155DCC5C
@ 00007FFF15921BEC
@ 00007FFF159201B1
@ 00007FFF15D031A3
@ 00007FFF15B49440
@ 00007FFF15B4B252
@ 00007FFF15B4DC99
@ 00007FFF15B4C2CD
@ 00007FFF15B4A6F2
@ 00007FFF15B495EC
@ 00007FFF15D00323
@ 00007FFF15CFD795
@ 00007FFF15CF5BC4
@ 00007FFF15CE7D3C
@ 00007FFF15CEB341
@ 00007FFF159F16EA
@ 00007FFF159EE94B
@ 00007FFF161109C3
@ 00007FFF16110519
@ 00007FFF16111283
@ 00007FFF161112E6
@ 00007FFF162E0B26
@ 00007FF84F09E8D7
@ 00007FF8500EC53C

[mutex.cc : 1453] RAW: mutex@0000023425B4B560 stack:
@ 00007FFF10C00260
@ 00007FFF10BF8EB3
@ 00007FFF1539C999
@ 00007FFF154CC90A
@ 00007FFF1597861C
@ 00007FFF15D2CE64
@ 00007FFF15912BA3
@ 00007FFF159128EC
@ 00007FFF155BA141
@ 00007FFF155BA33F
@ 00007FFF155BA797
@ 00007FFF155BCCF5
@ 00007FFF155BDF9F
@ 00007FFF15794EB5
@ 00007FFF15793EA6
@ 00007FFF155EB22D
@ 00007FFF15483B81
@ 00007FFF154548CA
@ 00007FFF15368EBC
@ 00007FFF152F4B0A
@ 00007FF6C0C42D73
@ 00007FFF24786AED
@ 00007FFF24786723
@ 00007FFF2474E76C
@ 00007FFF2474F474
@ 00007FFF2474FEF1
@ 00007FFF247575C6
@ 00007FFF24786BAD
@ 00007FFF24786A33
@ 00007FFF24750793
@ 00007FFF24812DE3
@ 00007FFF24812DB5
@ 00007FF6C0D06809
@ 00007FF6C0D066B2
@ 00007FF6C0D0656E
@ 00007FF6C0D0689E
@ 00007FF84F09E8D7
@ 00007FF8500EC53C

[mutex.cc : 1461] RAW: dying due to potential deadlock
```

To reproduce on PowerShell:
```
./arrow-flight-sql-test.exe --gtest --gtest_repeat=100
```
The test executable may need to be run multiple times before the error can show.

### Component(s)

FlightRPC, C++

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.