From 5c9c32bc38aea4ca71245255487dba30236b64db Mon Sep 17 00:00:00 2001 From: Philipp Spilger <philipp.spilger@kip.uni-heidelberg.de> Date: Tue, 14 Feb 2023 16:41:45 +0100 Subject: [PATCH] Remove global static log4cxx::LoggerPtr * destruction order determines whether global static works or segfaults Change-Id: Ic3c97070bb3703fdf14bf2921106619fc3bee6b3 --- hwdb4cpp/hwdb4cpp.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/hwdb4cpp/hwdb4cpp.cpp b/hwdb4cpp/hwdb4cpp.cpp index bfd4a05..2dd7556 100644 --- a/hwdb4cpp/hwdb4cpp.cpp +++ b/hwdb4cpp/hwdb4cpp.cpp @@ -14,7 +14,6 @@ #include "halco/common/iter_all.h" #include "hate/type_index.h" -static log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); std::string const hwdb4cpp::database::default_path = "/wang/data/bss-hwdb/db.yaml"; using namespace halco::common; @@ -94,6 +93,7 @@ T get_entry(const Node& node, const std::string name) try { return key.as<T>(); } } catch (const YAML::Exception& err) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR( logger, "Error converting node YAML'" << node << "' to type '" << hate::full_name<T>() << "': " << err.what()); @@ -176,6 +176,7 @@ struct convert<ADCYAML> static bool decode(const Node& node, ADCYAML& data) { if (!node.IsMap() || node.size() > 8) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -207,6 +208,7 @@ struct convert<FPGAYAML> static bool decode(const Node& node, FPGAYAML& data) { if (!node.IsMap() || node.size() > 3) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -245,6 +247,7 @@ struct convert<HXFPGAYAML> static bool decode(const Node& node, HXFPGAYAML& data) { if (!node.IsMap() || node.size() > 8) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -264,6 +267,7 @@ struct convert<HXFPGAYAML> auto eeprom = node["eeprom_chip_serial"]; if (ldo.IsDefined() || hand_serial.IsDefined() || chip_rev.IsDefined()) { if (!ldo.IsDefined() || !hand_serial.IsDefined() || !chip_rev.IsDefined()) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR( logger, "Decoding failed. LDO, hand serial and chip revision all need to be " "defined. Node: '''\n" @@ -280,6 +284,7 @@ struct convert<HXFPGAYAML> data.wing = wing; } else { if (eeprom.IsDefined() || fuse_dna.IsDefined() || extoll_node_id.IsDefined()) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR( logger, "Decoding failed. Only optional entries found. Node: '''\n" << node << "'''"); @@ -306,6 +311,7 @@ struct convert<ReticleYAML> static bool decode(const Node& node, ReticleYAML& data) { if (!node.IsMap() || node.size() > 2) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -331,6 +337,7 @@ struct convert<AnanasYAML> static bool decode(const Node& node, AnanasYAML& data) { if (!node.IsMap() || node.size() > 4) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -359,6 +366,7 @@ struct convert<HICANNYAML> static bool decode(const Node& node, HICANNYAML& data) { if (!node.IsMap() || node.size() > 3) { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_ERROR(logger, "Decoding failed of: '''\n" << node << "'''"); return false; } @@ -565,6 +573,7 @@ void database::load(std::string const path) } // yaml node does not contain wafer or dls setup or hxcube setup else { + log4cxx::LoggerPtr logger = log4cxx::Logger::getLogger("hwdb4cpp"); LOG4CXX_WARN(logger, "Found node entry neither from Wafer, DLS setup nor HX setup, ignore"); } } -- GitLab