-
Notifications
You must be signed in to change notification settings - Fork 9
2472 argvcontainer leaks c string from strdup #2473
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
2472 argvcontainer leaks c string from strdup #2473
Conversation
|
diff --git a/src/vt/collective/collective_ops.h b/src/vt/collective/collective_ops.h
index a2fadb8f2..a70f8dfe7 100644
--- a/src/vt/collective/collective_ops.h
+++ b/src/vt/collective/collective_ops.h
@@ -100,8 +100,7 @@ struct CollectiveAnyOps {
* \return the runtime pointer
*/
static RuntimePtrType initializePreconfigured(
- std::unique_ptr<StartupConfig> startup_config,
- MPI_Comm* comm = nullptr,
+ std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm = nullptr,
arguments::AppConfig const* app_config = nullptr,
bool print_startup_banner = true
);
diff --git a/src/vt/collective/startup.cc b/src/vt/collective/startup.cc
index 33f382f04..031d71e33 100644
--- a/src/vt/collective/startup.cc
+++ b/src/vt/collective/startup.cc
@@ -50,9 +50,7 @@
namespace vt {
-std::unique_ptr<StartupConfig> preconfigure(
- int& argc, char**& argv
-) {
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv) {
auto arg_config = std::make_unique<arguments::ArgConfig>();
auto parse_input_holder = arg_config->setupInputHolder(argc, argv);
return std::make_unique<StartupConfig>(
@@ -61,10 +59,8 @@ std::unique_ptr<StartupConfig> preconfigure(
}
RuntimePtrType initializePreconfigured(
- std::unique_ptr<StartupConfig> startup_config,
- MPI_Comm* comm,
- arguments::AppConfig const* app_config,
- bool print_startup_banner
+ std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm,
+ arguments::AppConfig const* app_config, bool print_startup_banner
) {
return CollectiveOps::initializePreconfigured(
std::move(startup_config), comm, app_config, print_startup_banner
@@ -73,8 +69,8 @@ RuntimePtrType initializePreconfigured(
// vt::{initialize,finalize} for main ::vt namespace
RuntimePtrType initialize(
- int& argc, char**& argv, MPI_Comm* comm, arguments::AppConfig const* appConfig,
- bool print_startup_banner
+ int& argc, char**& argv, MPI_Comm* comm,
+ arguments::AppConfig const* appConfig, bool print_startup_banner
) {
bool const is_interop = comm != nullptr;
return CollectiveOps::initialize(
diff --git a/src/vt/collective/startup.h b/src/vt/collective/startup.h
index 3dab0090c..73dc6dc54 100644
--- a/src/vt/collective/startup.h
+++ b/src/vt/collective/startup.h
@@ -67,9 +67,7 @@ namespace vt {
*
* \return the \c StartupConfig to pass to VT
*/
-std::unique_ptr<StartupConfig> preconfigure(
- int& argc, char**& argv
-);
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
/**
* \brief Initialize VT after it has been preconfigured
@@ -82,8 +80,7 @@ std::unique_ptr<StartupConfig> preconfigure(
* \return the runtime pointer
*/
RuntimePtrType initializePreconfigured(
- std::unique_ptr<StartupConfig> startup_config,
- MPI_Comm* comm = nullptr,
+ std::unique_ptr<StartupConfig> startup_config, MPI_Comm* comm = nullptr,
arguments::AppConfig const* app_config = nullptr,
bool print_startup_banner = true
);
diff --git a/src/vt/collective/startup_config.cc b/src/vt/collective/startup_config.cc
index 3c7ef9cbb..cf9b895b3 100644
--- a/src/vt/collective/startup_config.cc
+++ b/src/vt/collective/startup_config.cc
@@ -49,9 +49,9 @@ namespace vt {
StartupConfig::StartupConfig(
std::unique_ptr<arguments::ArgConfig> in_arg_config,
std::unique_ptr<ParseInputHolder> in_parse_input_holder
-) : arg_config_(std::move(in_arg_config)),
- parse_input_holder_(std::move(in_parse_input_holder))
-{ }
+)
+ : arg_config_(std::move(in_arg_config)),
+ parse_input_holder_(std::move(in_parse_input_holder)) { }
StartupConfig::~StartupConfig() = default;
diff --git a/src/vt/collective/startup_config.h b/src/vt/collective/startup_config.h
index 90f630f1c..e1c8fa803 100644
--- a/src/vt/collective/startup_config.h
+++ b/src/vt/collective/startup_config.h
@@ -64,17 +64,13 @@ namespace vt {
struct StartupConfig;
// fwd-decl preconfigure function for friend decl
-std::unique_ptr<StartupConfig> preconfigure(
- int& argc, char**& argv
-);
+std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
/**
* \brief StartupConfig for preconfiguring VT before starting up the runtime.
*/
struct StartupConfig {
- friend std::unique_ptr<StartupConfig> preconfigure(
- int& argc, char**& argv
- );
+ friend std::unique_ptr<StartupConfig> preconfigure(int& argc, char**& argv);
friend struct vt::runtime::Runtime;
diff --git a/src/vt/configs/arguments/args.cc b/src/vt/configs/arguments/args.cc
index ef640e27f..561723f36 100644
--- a/src/vt/configs/arguments/args.cc
+++ b/src/vt/configs/arguments/args.cc
@@ -1362,9 +1362,8 @@ public:
}
};
-std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
- int& argc, char**& argv
-) {
+std::unique_ptr<ParseInputHolder>
+ArgConfig::setupInputHolder(int& argc, char**& argv) {
auto pih = std::make_unique<ParseInputHolder>();
if (argc == 0) {
@@ -1396,7 +1395,8 @@ std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
// Build string-vector and reverse order to parse (CLI quirk)
for (auto it = vt_args.crbegin(); it != vt_args.crend(); ++it) {
- if (util::demangle::DemanglerUtils::splitString(*it,'=')[0] == "--vt_input_config_yaml") {
+ if (util::demangle::DemanglerUtils::splitString(*it, '=')[0] ==
+ "--vt_input_config_yaml") {
pih->vt_yaml_input_arg.push_back(*it);
} else {
pih->vt_args_to_parse.push_back(*it);
@@ -1439,15 +1439,13 @@ std::unique_ptr<ParseInputHolder> ArgConfig::setupInputHolder(
return pih;
}
-std::tuple<int, std::string> ArgConfig::parse(
- int& argc, char**& argv, AppConfig const* appConfig
-) {
+std::tuple<int, std::string>
+ArgConfig::parse(int& argc, char**& argv, AppConfig const* appConfig) {
return parse(setupInputHolder(argc, argv), appConfig);
}
std::tuple<int, std::string> ArgConfig::parse(
- std::unique_ptr<ParseInputHolder> pih,
- AppConfig const* appConfig
+ std::unique_ptr<ParseInputHolder> pih, AppConfig const* appConfig
) {
// If user didn't define appConfig, parse into this->config_.
if (not appConfig) {
@@ -1514,9 +1512,8 @@ std::tuple<int, std::string> ArgConfig::parseToConfig(
addTVArgs(app, appConfig);
addThreadingArgs(app, appConfig);
- std::tuple<int, std::string> result = parseArguments(
- app, std::move(pih), appConfig
- );
+ std::tuple<int, std::string> result =
+ parseArguments(app, std::move(pih), appConfig);
if (std::get<0>(result) not_eq -1) {
// non-success
return result;
diff --git a/src/vt/configs/arguments/args.h b/src/vt/configs/arguments/args.h
index 002fbbcd2..27576fcd8 100644
--- a/src/vt/configs/arguments/args.h
+++ b/src/vt/configs/arguments/args.h
@@ -119,9 +119,8 @@ struct ArgConfig : runtime::component::Component<ArgConfig> {
AppConfig config_;
private:
- std::tuple<int, std::string> parseToConfig(
- std::unique_ptr<ParseInputHolder> pih, AppConfig& appConfig
- );
+ std::tuple<int, std::string>
+ parseToConfig(std::unique_ptr<ParseInputHolder> pih, AppConfig& appConfig);
bool parsed_ = false;
};
diff --git a/src/vt/runtime/runtime.cc b/src/vt/runtime/runtime.cc
index ab81af032..442d0b6ab 100644
--- a/src/vt/runtime/runtime.cc
+++ b/src/vt/runtime/runtime.cc
@@ -97,19 +97,18 @@ namespace vt { namespace runtime {
/*static*/ bool volatile Runtime::sig_user_1_ = false;
Runtime::Runtime(
- std::unique_ptr<StartupConfig> startup_config,
- MPI_Comm in_comm,
- arguments::AppConfig const* appConfig,
- RuntimeInstType const in_instance
-) : instance_(in_instance), runtime_active_(false), is_interop_(true),
+ std::unique_ptr<StartupConfig> startup_config, MPI_Comm in_comm,
+ arguments::AppConfig const* appConfig, RuntimeInstType const in_instance
+)
+ : instance_(in_instance),
+ runtime_active_(false),
+ is_interop_(true),
initial_communicator_(in_comm),
arg_config_(std::move(startup_config->arg_config_)),
- app_config_(&arg_config_->config_)
-{
+ app_config_(&arg_config_->config_) {
startupMPIConfigArgs(
- std::move(startup_config->parse_input_holder_),
- initial_communicator_, arg_config_.get(),
- appConfig
+ std::move(startup_config->parse_input_holder_), initial_communicator_,
+ arg_config_.get(), appConfig
);
setUpSignals();
determinePhysicalNodeIDs();
@@ -152,8 +151,7 @@ Runtime::Runtime(
/// =========================================================================
startupMPIConfigArgs(
- argc, argv, is_interop_, initial_communicator_, arg_config_.get(),
- appConfig
+ argc, argv, is_interop_, initial_communicator_, arg_config_.get(), appConfig
);
setUpSignals();
determinePhysicalNodeIDs();
@@ -187,17 +185,13 @@ void Runtime::setUpSignals() {
}
startupMPIConfigArgs(
- arg_config->setupInputHolder(argc, argv),
- in_comm,
- arg_config,
- appConfig
+ arg_config->setupInputHolder(argc, argv), in_comm, arg_config, appConfig
);
}
/*static*/ void Runtime::startupMPIConfigArgs(
- std::unique_ptr<arguments::ParseInputHolder> pih,
- MPI_Comm in_comm, arguments::ArgConfig* arg_config,
- arguments::AppConfig const* appConfig
+ std::unique_ptr<arguments::ParseInputHolder> pih, MPI_Comm in_comm,
+ arguments::ArgConfig* arg_config, arguments::AppConfig const* appConfig
) {
// n.b. ref-update of args with pass-through arguments
std::tuple<int, std::string> result =
@@ -259,7 +253,9 @@ void Runtime::determinePhysicalNodeIDs() {
MPI_Comm i_comm = initial_communicator_;
MPI_Comm shm_comm;
- MPI_Comm_split_type(i_comm, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shm_comm);
+ MPI_Comm_split_type(
+ i_comm, MPI_COMM_TYPE_SHARED, 0, MPI_INFO_NULL, &shm_comm
+ );
int shm_rank = -1;
int node_size = -1;
MPI_Comm_rank(shm_comm, &shm_rank);
diff --git a/src/vt/runtime/runtime.h b/src/vt/runtime/runtime.h
index b4dc772f8..d18434d62 100644
--- a/src/vt/runtime/runtime.h
+++ b/src/vt/runtime/runtime.h
@@ -163,9 +163,8 @@ struct Runtime {
* \param[in] appConfig possible app config overrides
*/
static void startupMPIConfigArgs(
- std::unique_ptr<arguments::ParseInputHolder> pih,
- MPI_Comm in_comm, arguments::ArgConfig* arg_config,
- arguments::AppConfig const* appConfig
+ std::unique_ptr<arguments::ParseInputHolder> pih, MPI_Comm in_comm,
+ arguments::ArgConfig* arg_config, arguments::AppConfig const* appConfig
);
/**
@@ -239,7 +238,8 @@ struct Runtime {
*
* \return whether it initialized or not
*/
- bool initialize(bool const force_now = false, bool print_startup_banner = true);
+ bool
+ initialize(bool const force_now = false, bool print_startup_banner = true);
/**
* \internal \brief Finalize the runtime
|
Pipelines resultsvt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-clang-9-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-10-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-9-ldms-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-9-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-clang-13-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-clang-16-zoltan-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-clang-12-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-clang-11-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-clang-15-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-gcc-12-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-clang-14-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-icpx-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-gcc-14-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-gcc-11-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-gcc-13-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-9-cuda-11-4-3-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-clang-18-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-clang-17-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-clang-10-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-24-04-clang-16-vtk-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-22-04-gcc-12-vtk-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-9-cuda-12-2-0-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-10-openmpi-cpp-spack Build for 85dfe92 (2025-09-30 21:50:22 UTC) vt-build-amd64-ubuntu-20-04-gcc-9-cpp-docs Build for 870c2d9 (2025-09-30 21:22:16 UTC) vt-build-amd64-alpine-3-16-clang-cpp Build for 85dfe92 (2025-09-30 21:50:22 UTC) |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## develop #2473 +/- ##
===========================================
+ Coverage 88.28% 88.35% +0.06%
===========================================
Files 727 727
Lines 31227 31256 +29
===========================================
+ Hits 27569 27615 +46
+ Misses 3658 3641 -17
🚀 New features to boost your workflow:
|
…Config during preconfigure
6bcc013 to
ed330e0
Compare
nlslatt
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good
Fixes #2472