chaincodelabs / libmultiprocess

C++ library and code generator making it easy to call functions and reference objects in different processes
MIT License
29 stars 20 forks source link

Need to suppress compiler warnings in generated code from clang on macOS #61

Closed ryanofsky closed 2 years ago

ryanofsky commented 2 years ago

Reported https://github.com/bitcoin/bitcoin/pull/10102#pullrequestreview-827293918 by @Sjors

When building on macOS, using capnp 0.9.1 via homebrew and chaincodelabs/libmultiprocess@34ce921, I get flooded with warnings like this:

./interfaces/chain.h:227:18: note: overridden virtual function is here
    virtual void initWarning(const bilingual_str& message) = 0;
                 ^
In file included from ipc/capnp/node.cpp:9:
In file included from ./ipc/capnp/node-types.h:11:
In file included from ./ipc/capnp/wallet.capnp.proxy-types.h:6:
In file included from ./ipc/capnp/wallet.capnp.proxy.h:7:
In file included from ./ipc/capnp/wallet.h:9:
./ipc/capnp/chain.capnp.proxy.h:1414:26: warning: 'initError' overrides a member function but is not marked 'override' [-Wsuggest-override]
    typename M35::Result initError(M35::Param<0> message);

Also a bunch of these:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/v1/memory:2644:9: warning: destructor called on non-final 'mp::ProxyClient<ipc::capnp::messages::NotifyHeaderTipCallback>' that has virtual functions but non-virtual destructor [-Wdelete-non-abstract-non-virtual-dtor]
        __get_elem()->~_Tp();
ryanofsky commented 2 years ago

I'm not sure about the virtual destructor warnings. That seems bad and potentially there is a real bug or leak there.

The override warnings probably need a fix like #40 that was made to fix the same issue in GCC

ryanofsky commented 2 years ago

I was able to reproduce basically the same warnings with clang 13.0.0 on linux and added fixes in #62. Thanks for reporting!