ci: tidy job is producing output #33256

issue fanquake opened this issue on August 26, 2025
  1. fanquake commented at 10:50 AM on August 26, 2025: member

    master (6ca6f3b37b992591726bd13b494369bee3bd6468) https://cirrus-ci.com/task/5658586602274816:

    [17:17:19.943] [108/715][22.0s] clang-tidy-20 -p=/ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu -quiet -load=/tidy-build/libbitcoin-tidy.so /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/echo.capnp.proxy-server.c++
    [17:17:34.032] /usr/include/kj/async-inl.h:609:37: warning: The left operand of '+' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
    [17:17:34.032]   609 |       return *(void**)(*(char**)obj + voff);
    [17:17:34.032]       |                                     ^
    [17:17:34.032] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/echo.capnp.proxy-server.c++:23:12: note: Calling 'serverInvoke<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>, mp::ServerField<0, mp::Accessor<mp::echo_fields::Context, 17>, mp::ServerField<1, mp::Accessor<mp::echo_fields::Echo, 17>, mp::ServerRet<mp::Accessor<mp::echo_fields::Result, 18>, mp::ServerCall>>>>'
    [17:17:34.032]    23 |     return serverInvoke(*this, call_context, MakeServerField<0, Accessor<echo_fields::Context, FIELD_IN | FIELD_BOXED>>(MakeServerField<1, Accessor<echo_fields::Echo, FIELD_IN | FIELD_BOXED>>(Make<ServerRet, Accessor<echo_fields::Result, FIELD_OUT | FIELD_BOXED>>(ServerCall()))));
    [17:17:34.032]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:718:13)>'
    [17:17:34.032]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:17:34.032]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]   718 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:19: note: 'is_same_v' is false
    [17:17:34.032]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:17:34.032]       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:5: note: Taking false branch
    [17:17:34.032]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:17:34.032]       |     ^
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:682:16: note: Calling 'operator()'
    [17:17:34.032]   682 |         return fn();
    [17:17:34.032]       |                ^~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:43: note: Calling 'ServerField::invoke'
    [17:17:34.032]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:17:34.032]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:539:16: note: Calling 'PassField<mp::Accessor<mp::echo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Echo>, capnp::CallContext<ipc::capnp::messages::Echo::EchoParams, ipc::capnp::messages::Echo::EchoResults>>, mp::ServerField<1, mp::Accessor<mp::echo_fields::Echo, 17>, mp::ServerRet<mp::Accessor<mp::echo_fields::Result, 18>, mp::ServerCall>>, mp::TypeList<const std::basic_string<char> &>>'
    [17:17:34.032]   539 |         return PassField<Accessor>(Priority<2>(),
    [17:17:34.032]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]   540 |             typename Split<argc, ArgTypes>::First(),
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]   541 |             server_context,
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~
    [17:17:34.032]   542 |             this->parent(),
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~
    [17:17:34.032]   543 |             typename Split<argc, ArgTypes>::Second(),
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]   544 |             std::forward<Args>(args)...);
    [17:17:34.032]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-context.h:136:12: note: Calling 'CapabilityServerSet::getLocalServer'
    [17:17:34.032]   136 |     return server.m_context.connection->m_threads.getLocalServer(thread_client)
    [17:17:34.032]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /usr/include/capnp/capability.h:1274:10: note: Calling 'Promise::then'
    [17:17:34.032]  1274 |   return getLocalServerInternal(client)
    [17:17:34.032]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]  1275 |       .then([](void* server) -> kj::Maybe<typename T::Server&> {
    [17:17:34.032]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]  1276 |     if (server == nullptr) {
    [17:17:34.032]       |     ~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]  1277 |       return nullptr;
    [17:17:34.032]       |       ~~~~~~~~~~~~~~~
    [17:17:34.032]  1278 |     } else {
    [17:17:34.032]       |     ~~~~~~~~
    [17:17:34.032]  1279 |       return *reinterpret_cast<typename T::Server*>(server);
    [17:17:34.032]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]  1280 |     }
    [17:17:34.032]       |     ~
    [17:17:34.032]  1281 |   });
    [17:17:34.032]       |   ~~
    [17:17:34.032] /usr/include/kj/async-inl.h:1295:32: note: Calling 'GetFunctorStartAddress::apply'
    [17:17:34.032]  1295 |   void* continuationTracePtr = _::GetFunctorStartAddress<_::FixVoid<T>&&>::apply(func);
    [17:17:34.032]       |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /usr/include/kj/async-inl.h:677:12: note: Calling 'PtmfHelper::apply'
    [17:17:34.032]   677 |     return PtmfHelper::from<ReturnType, Decay<Func>, ParamTypes...>(
    [17:17:34.032]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032]   678 |         &Decay<Func>::operator()).apply(&func);
    [17:17:34.032]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:17:34.032] /usr/include/kj/async-inl.h:606:9: note: Assuming the condition is true
    [17:17:34.032]   606 |     if (voff & 1) {
    [17:17:34.032]       |         ^~~~~~~~
    [17:17:34.032] /usr/include/kj/async-inl.h:606:5: note: Taking true branch
    [17:17:34.032]   606 |     if (voff & 1) {
    [17:17:34.032]       |     ^
    [17:17:34.032] /usr/include/kj/async-inl.h:609:37: note: The left operand of '+' is a garbage value
    [17:17:34.032]   609 |       return *(void**)(*(char**)obj + voff);
    [17:17:34.032]       |                        ~~~~~~~~~~~~ ^
    [17:17:34.032] 1 warning generated.
    
    [17:30:54.725] [683/715][156.9s] clang-tidy-20 -p=/ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu -quiet -load=/tidy-build/libbitcoin-tidy.so /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/mining.capnp.proxy-server.c++
    [17:30:54.725] /usr/include/kj/async-inl.h:609:37: warning: The left operand of '+' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
    [17:30:54.725]   609 |       return *(void**)(*(char**)obj + voff);
    [17:30:54.725]       |                                     ^
    [17:30:54.725] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/mining.capnp.proxy-server.c++:68:12: note: Calling 'serverInvoke<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>, mp::ServerField<0, mp::Accessor<mp::mining_fields::Context, 17>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>>>>'
    [17:30:54.725]    68 |     return serverInvoke(*this, call_context, MakeServerField<0, Accessor<mining_fields::Context, FIELD_IN | FIELD_BOXED>>(MakeServerField<1, Accessor<mining_fields::Options, FIELD_IN | FIELD_BOXED>>(Make<ServerRet, Accessor<mining_fields::Result, FIELD_OUT | FIELD_BOXED>>(ServerCall()))));
    [17:30:54.725]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:718:13)>'
    [17:30:54.725]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:30:54.725]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]   718 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:19: note: 'is_same_v' is false
    [17:30:54.725]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:30:54.725]       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:5: note: Taking false branch
    [17:30:54.725]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:30:54.725]       |     ^
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:682:16: note: Calling 'operator()'
    [17:30:54.725]   682 |         return fn();
    [17:30:54.725]       |                ^~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:43: note: Calling 'ServerField::invoke'
    [17:30:54.725]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:30:54.725]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:539:16: note: Calling 'PassField<mp::Accessor<mp::mining_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::BlockTemplate>, capnp::CallContext<ipc::capnp::messages::BlockTemplate::WaitNextParams, ipc::capnp::messages::BlockTemplate::WaitNextResults>>, mp::ServerField<1, mp::Accessor<mp::mining_fields::Options, 17>, mp::ServerRet<mp::Accessor<mp::mining_fields::Result, 18>, mp::ServerCall>>, mp::TypeList<node::BlockWaitOptions>>'
    [17:30:54.725]   539 |         return PassField<Accessor>(Priority<2>(),
    [17:30:54.725]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]   540 |             typename Split<argc, ArgTypes>::First(),
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]   541 |             server_context,
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~
    [17:30:54.725]   542 |             this->parent(),
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~
    [17:30:54.725]   543 |             typename Split<argc, ArgTypes>::Second(),
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]   544 |             std::forward<Args>(args)...);
    [17:30:54.725]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-context.h:136:12: note: Calling 'CapabilityServerSet::getLocalServer'
    [17:30:54.725]   136 |     return server.m_context.connection->m_threads.getLocalServer(thread_client)
    [17:30:54.725]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /usr/include/capnp/capability.h:1274:10: note: Calling 'Promise::then'
    [17:30:54.725]  1274 |   return getLocalServerInternal(client)
    [17:30:54.725]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]  1275 |       .then([](void* server) -> kj::Maybe<typename T::Server&> {
    [17:30:54.725]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]  1276 |     if (server == nullptr) {
    [17:30:54.725]       |     ~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]  1277 |       return nullptr;
    [17:30:54.725]       |       ~~~~~~~~~~~~~~~
    [17:30:54.725]  1278 |     } else {
    [17:30:54.725]       |     ~~~~~~~~
    [17:30:54.725]  1279 |       return *reinterpret_cast<typename T::Server*>(server);
    [17:30:54.725]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]  1280 |     }
    [17:30:54.725]       |     ~
    [17:30:54.725]  1281 |   });
    [17:30:54.725]       |   ~~
    [17:30:54.725] /usr/include/kj/async-inl.h:1295:32: note: Calling 'GetFunctorStartAddress::apply'
    [17:30:54.725]  1295 |   void* continuationTracePtr = _::GetFunctorStartAddress<_::FixVoid<T>&&>::apply(func);
    [17:30:54.725]       |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /usr/include/kj/async-inl.h:677:12: note: Calling 'PtmfHelper::apply'
    [17:30:54.725]   677 |     return PtmfHelper::from<ReturnType, Decay<Func>, ParamTypes...>(
    [17:30:54.725]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725]   678 |         &Decay<Func>::operator()).apply(&func);
    [17:30:54.725]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:30:54.725] /usr/include/kj/async-inl.h:606:9: note: Assuming the condition is true
    [17:30:54.725]   606 |     if (voff & 1) {
    [17:30:54.725]       |         ^~~~~~~~
    [17:30:54.725] /usr/include/kj/async-inl.h:606:5: note: Taking true branch
    [17:30:54.725]   606 |     if (voff & 1) {
    [17:30:54.725]       |     ^
    [17:30:54.725] /usr/include/kj/async-inl.h:609:37: note: The left operand of '+' is a garbage value
    [17:30:54.725]   609 |       return *(void**)(*(char**)obj + voff);
    [17:30:54.725]       |                        ~~~~~~~~~~~~ ^
    [17:30:54.725] 1 warning generated.
    
    [17:31:39.220] [713/715][30.6s] clang-tidy-20 -p=/ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu -quiet -load=/tidy-build/libbitcoin-tidy.so /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/init.capnp.proxy-server.c++
    [17:31:45.233] /usr/include/kj/async-inl.h:609:37: warning: The left operand of '+' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
    [17:31:45.233]   609 |       return *(void**)(*(char**)obj + voff);
    [17:31:45.233]       |                                     ^
    [17:31:45.233] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/capnp/init.capnp.proxy-server.c++:26:12: note: Calling 'serverInvoke<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>, mp::ServerField<0, mp::Accessor<mp::init_fields::Context, 17>, mp::ServerRet<mp::Accessor<mp::init_fields::Result, 18>, mp::ServerCall>>>'
    [17:31:45.233]    26 |     return serverInvoke(*this, call_context, MakeServerField<0, Accessor<init_fields::Context, FIELD_IN | FIELD_BOXED>>(Make<ServerRet, Accessor<init_fields::Result, FIELD_OUT | FIELD_BOXED>>(ServerCall())));
    [17:31:45.233]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:718:13)>'
    [17:31:45.233]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:31:45.233]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]   718 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:19: note: 'is_same_v' is false
    [17:31:45.233]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:31:45.233]       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:5: note: Taking false branch
    [17:31:45.233]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:31:45.233]       |     ^
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:682:16: note: Calling 'operator()'
    [17:31:45.233]   682 |         return fn();
    [17:31:45.233]       |                ^~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:43: note: Calling 'ServerField::invoke'
    [17:31:45.233]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:31:45.233]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:539:16: note: Calling 'PassField<mp::Accessor<mp::init_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<ipc::capnp::messages::Init>, capnp::CallContext<ipc::capnp::messages::Init::MakeMiningParams, ipc::capnp::messages::Init::MakeMiningResults>>, mp::ServerRet<mp::Accessor<mp::init_fields::Result, 18>, mp::ServerCall>, mp::TypeList<>>'
    [17:31:45.233]   539 |         return PassField<Accessor>(Priority<2>(),
    [17:31:45.233]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]   540 |             typename Split<argc, ArgTypes>::First(),
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]   541 |             server_context,
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~
    [17:31:45.233]   542 |             this->parent(),
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~
    [17:31:45.233]   543 |             typename Split<argc, ArgTypes>::Second(),
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]   544 |             std::forward<Args>(args)...);
    [17:31:45.233]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-context.h:136:12: note: Calling 'CapabilityServerSet::getLocalServer'
    [17:31:45.233]   136 |     return server.m_context.connection->m_threads.getLocalServer(thread_client)
    [17:31:45.233]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /usr/include/capnp/capability.h:1274:10: note: Calling 'Promise::then'
    [17:31:45.233]  1274 |   return getLocalServerInternal(client)
    [17:31:45.233]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]  1275 |       .then([](void* server) -> kj::Maybe<typename T::Server&> {
    [17:31:45.233]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]  1276 |     if (server == nullptr) {
    [17:31:45.233]       |     ~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]  1277 |       return nullptr;
    [17:31:45.233]       |       ~~~~~~~~~~~~~~~
    [17:31:45.233]  1278 |     } else {
    [17:31:45.233]       |     ~~~~~~~~
    [17:31:45.233]  1279 |       return *reinterpret_cast<typename T::Server*>(server);
    [17:31:45.233]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]  1280 |     }
    [17:31:45.233]       |     ~
    [17:31:45.233]  1281 |   });
    [17:31:45.233]       |   ~~
    [17:31:45.233] /usr/include/kj/async-inl.h:1295:32: note: Calling 'GetFunctorStartAddress::apply'
    [17:31:45.233]  1295 |   void* continuationTracePtr = _::GetFunctorStartAddress<_::FixVoid<T>&&>::apply(func);
    [17:31:45.233]       |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /usr/include/kj/async-inl.h:677:12: note: Calling 'PtmfHelper::apply'
    [17:31:45.233]   677 |     return PtmfHelper::from<ReturnType, Decay<Func>, ParamTypes...>(
    [17:31:45.233]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233]   678 |         &Decay<Func>::operator()).apply(&func);
    [17:31:45.233]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:31:45.233] /usr/include/kj/async-inl.h:606:9: note: Assuming the condition is true
    [17:31:45.233]   606 |     if (voff & 1) {
    [17:31:45.233]       |         ^~~~~~~~
    [17:31:45.233] /usr/include/kj/async-inl.h:606:5: note: Taking true branch
    [17:31:45.233]   606 |     if (voff & 1) {
    [17:31:45.233]       |     ^
    [17:31:45.233] /usr/include/kj/async-inl.h:609:37: note: The left operand of '+' is a garbage value
    [17:31:45.233]   609 |       return *(void**)(*(char**)obj + voff);
    [17:31:45.233]       |                        ~~~~~~~~~~~~ ^
    [17:31:45.233] 2 warnings generated.
    [17:31:45.233] 
    [17:31:45.233] [714/715][167.1s] clang-tidy-20 -p=/ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu -quiet -load=/tidy-build/libbitcoin-tidy.so /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy-server.c++
    [17:32:33.147] /usr/include/kj/async-inl.h:609:37: warning: The left operand of '+' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
    [17:32:33.147]   609 |       return *(void**)(*(char**)obj + voff);
    [17:32:33.147]       |                                     ^
    [17:32:33.147] /ci_container_base/ci/scratch/build-x86_64-pc-linux-gnu/src/ipc/libmultiprocess/test/mp/test/foo.capnp.proxy-server.c++:95:12: note: Calling 'serverInvoke<mp::ProxyServer<mp::test::messages::FooFn>, capnp::CallContext<mp::test::messages::FooFn::CallParams, mp::test::messages::FooFn::CallResults>, mp::ServerField<0, mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall>>>'
    [17:32:33.147]    95 |     return serverInvoke(*this, call_context, MakeServerField<0, Accessor<foo_fields::Context, FIELD_IN | FIELD_BOXED>>(Make<ServerRet, Accessor<foo_fields::Result, FIELD_OUT>>(ServerCall())));
    [17:32:33.147]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:16: note: Calling 'ReplaceVoid<(lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:28), (lambda at /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:718:13)>'
    [17:32:33.147]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:32:33.147]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]   718 |             [&]() { return kj::Promise<CallContext>(kj::mv(call_context)); })
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:19: note: 'is_same_v' is false
    [17:32:33.147]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:32:33.147]       |                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:678:5: note: Taking false branch
    [17:32:33.147]   678 |     if constexpr (std::is_same_v<decltype(fn()), void>) {
    [17:32:33.147]       |     ^
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:682:16: note: Calling 'operator()'
    [17:32:33.147]   682 |         return fn();
    [17:32:33.147]       |                ^~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:717:43: note: Calling 'ServerField::invoke'
    [17:32:33.147]   717 |         return ReplaceVoid([&]() { return fn.invoke(server_context, ArgList()); },
    [17:32:33.147]       |                                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/proxy-types.h:539:16: note: Calling 'PassField<mp::Accessor<mp::foo_fields::Context, 17>, mp::ServerInvokeContext<mp::ProxyServer<mp::test::messages::FooFn>, capnp::CallContext<mp::test::messages::FooFn::CallParams, mp::test::messages::FooFn::CallResults>>, mp::ServerRet<mp::Accessor<mp::foo_fields::Result, 2>, mp::ServerCall>, mp::TypeList<>>'
    [17:32:33.147]   539 |         return PassField<Accessor>(Priority<2>(),
    [17:32:33.147]       |                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]   540 |             typename Split<argc, ArgTypes>::First(),
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]   541 |             server_context,
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~
    [17:32:33.147]   542 |             this->parent(),
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~
    [17:32:33.147]   543 |             typename Split<argc, ArgTypes>::Second(),
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]   544 |             std::forward<Args>(args)...);
    [17:32:33.147]       |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /ci_container_base/src/ipc/libmultiprocess/include/mp/type-context.h:136:12: note: Calling 'CapabilityServerSet::getLocalServer'
    [17:32:33.147]   136 |     return server.m_context.connection->m_threads.getLocalServer(thread_client)
    [17:32:33.147]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /usr/include/capnp/capability.h:1274:10: note: Calling 'Promise::then'
    [17:32:33.147]  1274 |   return getLocalServerInternal(client)
    [17:32:33.147]       |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]  1275 |       .then([](void* server) -> kj::Maybe<typename T::Server&> {
    [17:32:33.147]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]  1276 |     if (server == nullptr) {
    [17:32:33.147]       |     ~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]  1277 |       return nullptr;
    [17:32:33.147]       |       ~~~~~~~~~~~~~~~
    [17:32:33.147]  1278 |     } else {
    [17:32:33.147]       |     ~~~~~~~~
    [17:32:33.147]  1279 |       return *reinterpret_cast<typename T::Server*>(server);
    [17:32:33.147]       |       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]  1280 |     }
    [17:32:33.147]       |     ~
    [17:32:33.147]  1281 |   });
    [17:32:33.147]       |   ~~
    [17:32:33.147] /usr/include/kj/async-inl.h:1295:32: note: Calling 'GetFunctorStartAddress::apply'
    [17:32:33.147]  1295 |   void* continuationTracePtr = _::GetFunctorStartAddress<_::FixVoid<T>&&>::apply(func);
    [17:32:33.147]       |                                ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /usr/include/kj/async-inl.h:677:12: note: Calling 'PtmfHelper::apply'
    [17:32:33.147]   677 |     return PtmfHelper::from<ReturnType, Decay<Func>, ParamTypes...>(
    [17:32:33.147]       |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147]   678 |         &Decay<Func>::operator()).apply(&func);
    [17:32:33.147]       |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [17:32:33.147] /usr/include/kj/async-inl.h:606:9: note: Assuming the condition is true
    [17:32:33.147]   606 |     if (voff & 1) {
    [17:32:33.147]       |         ^~~~~~~~
    [17:32:33.147] /usr/include/kj/async-inl.h:606:5: note: Taking true branch
    [17:32:33.147]   606 |     if (voff & 1) {
    [17:32:33.147]       |     ^
    [17:32:33.147] /usr/include/kj/async-inl.h:609:37: note: The left operand of '+' is a garbage value
    [17:32:33.147]   609 |       return *(void**)(*(char**)obj + voff);
    [17:32:33.147]       |                        ~~~~~~~~~~~~ ^
    [17:32:33.147] 1 warning generated.
    
  2. fanquake commented at 10:51 AM on August 26, 2025: member
  3. ryanofsky commented at 1:48 PM on August 26, 2025: contributor

    This warning "warning: The left operand of '+' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]" is a clang-analzyer false positive that we'd seen before and is fixed in https://github.com/capnproto/capnproto/pull/2334/commits/4c011373fe209a8b045b5aca0de043de271ad931 (https://github.com/capnproto/capnproto/pull/2334) upstream.

    As described in that commit message it's possible to turn off that specific warning globally but not really to suppress it locally with compiler options. So if the output is a problem we could turn it off globally, or apply the patch there which suppresses it locally with a NOLINT annotation

  4. maflcko added the label Tests on Aug 26, 2025
  5. fanquake added this to the milestone 30.0 on Sep 2, 2025
  6. fanquake commented at 11:04 AM on September 2, 2025: member

    So if the output is a problem we could turn it off globally, or apply the patch there which suppresses it locally with a NOLINT annotation

    I don't think we should have spurious/undocumented output in the CI, so it'd be good to fix this.

  7. ryanofsky referenced this in commit c157a1bc83 on Sep 2, 2025
  8. ryanofsky commented at 1:25 PM on September 2, 2025: contributor

    re: #33256 (comment)

    I don't think we should have spurious/undocumented output in the CI, so it'd be good to fix this.

    Agree it's important to fix because it makes output not useful for identifying real errors. Opened #33281 to try to work around this.

  9. achow101 closed this on Sep 8, 2025

  10. achow101 referenced this in commit 0b0bd74c3e on Sep 8, 2025
  11. Kino1994 referenced this in commit 965d566e98 on Jun 28, 2026
  12. BigcoinBGC referenced this in commit 9d70202e58 on Jun 30, 2026
  13. Kino1994 referenced this in commit c05f4bdf51 on Aug 19, 2026
  14. bitcoin locked this on Sep 8, 2026

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2026-09-09 07:56 UTC