When the whole codebase is compiled under TSAN (not just the tests), there is a compiler warning about a value being used uninitialized.
In file included from bazel-out/k8-fastbuild-tsan/bin/external/score_baselibs+/score/static_reflection_with_serialization/visitor/_virtual_includes/visitor/static_reflection_with_serialization/visitor/visit_as_struct.h:23,
from external/score_baselibs+/score/mw/log/detail/logging_identifier.h:18,
from external/score_baselibs+/score/mw/log/log_stream.h:19,
from external/score_baselibs+/score/mw/log/logger.h:16,
from bazel-out/k8-fastbuild-tsan/bin/score/launch_manager/src/daemon/src/common/_virtual_includes/log/score/mw/launch_manager/common/log.hpp:25,
from ./score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.hpp:21,
from score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp:14:
external/score_baselibs+/score/quality/compiler_warnings/deprecation.h:22:26: warning: 'using score_deprecated_macro_def___COUNTER__ = int' is deprecated: STRUCT_VISITABLE is deprecated, use SCORE_STRUCT_VISITABLE instead. [-Wdeprecated-declarations]
22 | static_assert(sizeof(score_deprecated_macro_def_##ID) > 0, "")
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
external/score_baselibs+/score/quality/compiler_warnings/deprecation.h:19:44: note: in expansion of macro 'SCORE_DEPRECATE_MACRO_USE_IMPL'
19 | #define SCORE_DEPRECATE_MACRO_USE(MESSAGE) SCORE_DEPRECATE_MACRO_USE_IMPL(MESSAGE, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bazel-out/k8-fastbuild-tsan/bin/external/score_baselibs+/score/static_reflection_with_serialization/visitor/_virtual_includes/visitor/static_reflection_with_serialization/visitor/visit_as_struct.h:853:5: note: in expansion of macro 'SCORE_DEPRECATE_MACRO_USE'
853 | SCORE_DEPRECATE_MACRO_USE("STRUCT_VISITABLE is deprecated, use SCORE_STRUCT_VISITABLE instead."); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
external/score_baselibs+/score/mw/log/detail/logging_identifier.h:84:1: note: in expansion of macro 'STRUCT_VISITABLE'
84 | STRUCT_VISITABLE(LoggingIdentifier, data)
| ^~~~~~~~~~~~~~~~
external/score_baselibs+/score/quality/compiler_warnings/deprecation.h:21:11: note: declared here
21 | using score_deprecated_macro_def_##ID [[deprecated(MESSAGE)]] = int; \
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
external/score_baselibs+/score/quality/compiler_warnings/deprecation.h:19:44: note: in expansion of macro 'SCORE_DEPRECATE_MACRO_USE_IMPL'
19 | #define SCORE_DEPRECATE_MACRO_USE(MESSAGE) SCORE_DEPRECATE_MACRO_USE_IMPL(MESSAGE, __COUNTER__)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bazel-out/k8-fastbuild-tsan/bin/external/score_baselibs+/score/static_reflection_with_serialization/visitor/_virtual_includes/visitor/static_reflection_with_serialization/visitor/visit_as_struct.h:853:5: note: in expansion of macro 'SCORE_DEPRECATE_MACRO_USE'
853 | SCORE_DEPRECATE_MACRO_USE("STRUCT_VISITABLE is deprecated, use SCORE_STRUCT_VISITABLE instead."); \
| ^~~~~~~~~~~~~~~~~~~~~~~~~
external/score_baselibs+/score/mw/log/detail/logging_identifier.h:84:1: note: in expansion of macro 'STRUCT_VISITABLE'
84 | STRUCT_VISITABLE(LoggingIdentifier, data)
| ^~~~~~~~~~~~~~~~
In file included from bazel-out/k8-fastbuild-tsan/bin/score/launch_manager/src/daemon/src/configuration/_virtual_includes/config_loader/score/mw/launch_manager/configuration/config_loader.hpp:20,
from ./score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.hpp:17:
In constructor 'constexpr score::cpp::expected<T, E>::expected(U&&) [with U = std::optional<score::mw::lifecycle::internal::configuration::RestartAction>; <template-parameter-2-2> = void; <template-parameter-2-3> = void; T = std::optional<score::mw::lifecycle::internal::configuration::RestartAction>; E = score::mw::lifecycle::internal::configuration::IConfigLoader::Error]',
inlined from 'score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error> score::mw::lifecycle::internal::configuration::details::convertRestartAction(const score::mw::lifecycle::internal::configuration::fb::RestartAction*)' at score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp:194:57:
external/score_baselibs+/score/language/futurecpp/include/score/expected.hpp:464:9: error: '*(uint32_t*)((char*)&<unnamed> + offsetof(score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error>,score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error>::<unnamed>.score::cpp::detail::expected::move_assign_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::move_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::copy_assign_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::copy_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::destructor_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>))' may be used uninitialized [-Werror=maybe-uninitialized]
464 | static_cast<void>(::new (&this->value_) T{std::forward<U>(rhs)});
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp: In function 'score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error> score::mw::lifecycle::internal::configuration::details::convertRestartAction(const score::mw::lifecycle::internal::configuration::fb::RestartAction*)':
score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp:194:21: note: '<anonymous>' declared here
194 | return std::optional<RestartAction>{std::nullopt};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In constructor 'constexpr score::cpp::expected<T, E>::expected(U&&) [with U = std::optional<score::mw::lifecycle::internal::configuration::RestartAction>; <template-parameter-2-2> = void; <template-parameter-2-3> = void; T = std::optional<score::mw::lifecycle::internal::configuration::RestartAction>; E = score::mw::lifecycle::internal::configuration::IConfigLoader::Error]',
inlined from 'score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error> score::mw::lifecycle::internal::configuration::details::convertRestartAction(const score::mw::lifecycle::internal::configuration::fb::RestartAction*)' at score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp:194:57:
external/score_baselibs+/score/language/futurecpp/include/score/expected.hpp:464:9: error: '((uint32_t*)((char*)&<unnamed> + offsetof(score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error>,score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error>::<unnamed>.score::cpp::detail::expected::move_assign_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::move_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::copy_assign_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::copy_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>.score::cpp::detail::expected::destructor_base<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error, true>::<unnamed>)))[1]' may be used uninitialized [-Werror=maybe-uninitialized]
464 | static_cast<void>(::new (&this->value_) T{std::forward<U>(rhs)});
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp: In function 'score::cpp::expected<std::optional<score::mw::lifecycle::internal::configuration::RestartAction>, score::mw::lifecycle::internal::configuration::IConfigLoader::Error> score::mw::lifecycle::internal::configuration::details::convertRestartAction(const score::mw::lifecycle::internal::configuration::fb::RestartAction*)':
score/launch_manager/src/daemon/src/configuration/details/flatbuffer_type_converters.cpp:194:21: note: '<anonymous>' declared here
194 | return std::optional<RestartAction>{std::nullopt};
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1plus: all warnings being treated as errors
Description
When the whole codebase is compiled under TSAN (not just the tests), there is a compiler warning about a value being used uninitialized.
Analysis results
No response
Solution
No response
Error Occurrence Rate
Reproducible
How to reproduce
Supporting Information
https://github.com/eclipse-score/lifecycle/actions/runs/31793467286/job/94745294931
Classification
Minor
First Affected Release
not released (main)
Last Affected Release
not released (main)
Expected Fixed Release
before release (main)
Category