-
Hi everyone, We have been using the google-cloud-cpp library for a while for managing google cloud storage (uploading, deleting, fetching objects and listing buckets). We have some unit tests set up for these operations using After checking the issue with a debugger it seems that the issue comes from the
The originating function in
We are building a separate shared client library as a google-cloud plugin in our application and the google-cloud-cpp library is built locally as a static library. The google cloud library is then linked to the client plugin dll. The client code in the dll looks something like this:
The
What may have changed since the previous version that requires change on Windows? |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 8 replies
-
Hey, thanks for the detailed report.
In v1.42.0 we changed the implementation for passing configuration options from the client to lower layers. We did this to support per-operation configuration for GCS. The implementation involves The google-cloud-cpp/google/cloud/options.h Line 178 in f3eedec Maybe these typeids are different between the library and the application, depending on when/how the plugin is loaded? If so, we would see the I don't have any help to offer just yet. I see apache/nifi-minifi-cpp#1572 and I am trying to build and run the tests under https://github.com/lordgamez/nifi-minifi-cpp/tree/MINIFICPP-2027/extensions/gcp/tests on Windows to reproduce the problem. I will keep working on this. The one thing that is strange in the stack trace, is that the execution jumps from the library to the executable. It seems like it should stay in the library. |
Beta Was this translation helpful? Give feedback.
-
Hi Darren, thanks for the quick reply and for looking into this! Just a quick overview of the gcp library build in minifi in case it may help. The google cloud library build is configured with cmake in the The tests are built separately as described in When the test is started most test suites include the |
Beta Was this translation helpful? Give feedback.
Hey, so I asked for a second opinion and @coryan pointed out that the test executable is both
minifi-gcp
library directlyLoadLibraryEx()
onminifi-gcp.dll
This means there are two versions of the libraries symbols. (I did notice that the address of
thread_local current_options
was different in the test executable and plugin.)I think I led you astray here. In reading further, I don'…