This is an automated email from the ASF dual-hosted git repository.
lidavidm pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow.git
The following commit(s) were added to refs/heads/main by this push:
new 5a28e180f0 GH-43130: [C++][ArrowFlight] Crash due to UCS thread mode
(#43120)
5a28e180f0 is described below
commit 5a28e180f0a078d0b1a970310d5c03ea6a351ffe
Author: Amir Gonnen <[email protected]>
AuthorDate: Fri Jul 5 07:57:26 2024 +0300
GH-43130: [C++][ArrowFlight] Crash due to UCS thread mode (#43120)
When mode is `UCS_THREAD_MODE_SERIALIZED`, UCX crash due to mpool
corruption.
This happens when buffer is deallocated on a different thread. In such case
two threads access UCX memory pool simultaneously.
See discussion on UCX forum: https://github.com/openucx/ucx/discussions/9987
* GitHub Issue: #43130
Authored-by: Amir Gonnen <[email protected]>
Signed-off-by: David Li <[email protected]>
---
cpp/src/arrow/flight/transport/ucx/ucx_client.cc | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/cpp/src/arrow/flight/transport/ucx/ucx_client.cc
b/cpp/src/arrow/flight/transport/ucx/ucx_client.cc
index 32c2fd776f..946ac2d176 100644
--- a/cpp/src/arrow/flight/transport/ucx/ucx_client.cc
+++ b/cpp/src/arrow/flight/transport/ucx/ucx_client.cc
@@ -97,7 +97,7 @@ class ClientConnection {
ucp_worker_params_t worker_params;
std::memset(&worker_params, 0, sizeof(worker_params));
worker_params.field_mask = UCP_WORKER_PARAM_FIELD_THREAD_MODE;
- worker_params.thread_mode = UCS_THREAD_MODE_SERIALIZED;
+ worker_params.thread_mode = UCS_THREAD_MODE_MULTI;
ucp_worker_h ucp_worker;
status = ucp_worker_create(ucp_context->get(), &worker_params,
&ucp_worker);