From 40a1f069dc2c6911045651eaf2ba25b9fbe98657 Mon Sep 17 00:00:00 2001 From: himanshukumaaar Date: Fri, 29 May 2026 03:54:10 +0530 Subject: [PATCH 1/2] fix(mip): add explicit destructor to iteration_data_t to prevent SIGSEGV Without an explicit destructor, chol (unique_ptr holding cudssDestroy) was destroyed while rmm device vectors and streams were still live due to reverse member declaration order. Explicitly reset chol first and sync the stream before member destruction. Updated code in cpp/src/barrier/barrier.cu: ~iteration_data_t() { chol.reset(); handle_ptr->sync_stream(); } Fixes #1219 --- cpp/src/barrier/barrier.cu | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/cpp/src/barrier/barrier.cu b/cpp/src/barrier/barrier.cu index e7604fb60e..01b639c7ff 100644 --- a/cpp/src/barrier/barrier.cu +++ b/cpp/src/barrier/barrier.cu @@ -440,6 +440,12 @@ class iteration_data_t { } } + ~iteration_data_t() + { + chol.reset(); + handle_ptr->sync_stream(); + } + void form_augmented(bool first_call = false) { i_t n = A.n; From 60709092c0a6c29e21cd328beb22e2bae547cbf6 Mon Sep 17 00:00:00 2001 From: himanshukumaaar Date: Fri, 29 May 2026 04:06:04 +0530 Subject: [PATCH 2/2] fix(mip): preload bundled libgomp as RTLD_GLOBAL to unify OpenMP runtime Three separate libgomp instances were loaded simultaneously causing SIGSEGV. Root cause: cudssDestroy calling dlclose corrupted system libgomp state while OpenMP workers were still active. Updated code in python/cuopt/cuopt/linear_programming/__init__.py: import ctypes import os _gomp_path = os.path.join(os.path.dirname(__file__), '_libs', 'libgomp-855c301a.so.1.0.0') if os.path.exists(_gomp_path): ctypes.CDLL(_gomp_path, mode=ctypes.RTLD_GLOBAL) Fixes #1219 --- python/cuopt/cuopt/linear_programming/__init__.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/python/cuopt/cuopt/linear_programming/__init__.py b/python/cuopt/cuopt/linear_programming/__init__.py index 835d09d76a..9a41222d23 100644 --- a/python/cuopt/cuopt/linear_programming/__init__.py +++ b/python/cuopt/cuopt/linear_programming/__init__.py @@ -1,6 +1,13 @@ # SPDX-FileCopyrightText: Copyright (c) 2023-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved. # SPDX-License-Identifier: Apache-2.0 +import ctypes +import os + +_gomp_path = os.path.join(os.path.dirname(__file__), "_libs", "libgomp-855c301a.so.1.0.0") +if os.path.exists(_gomp_path): + ctypes.CDLL(_gomp_path, mode=ctypes.RTLD_GLOBAL) + from cuopt.linear_programming import internals from cuopt.linear_programming.data_model import DataModel from cuopt.linear_programming.io import ParseMps, Read