cpp_redis icon indicating copy to clipboard operation
cpp_redis copied to clipboard

Sample client deadlocks using vcpkg and Visual Studio 2017

Open unclevlad opened this issue 7 years ago • 5 comments

We've heard nothing but good things about this library, so when we needed a Windows client for redis and saw this was supported by vcpkg, we jumped at the chance to use it.

And we were stopped dead in our tracks at the proof-of-concept phase. As every single example that actually tries to communicate with redis deadlocks. (The logger example works just fine,)

Steps to reproduce minimal example:

  1. Install cpp_redis in vcpkg
  2. Create brand new solution in VS 2017 - Windows console application - Debug - 64bit
  3. Gut all the precompiled header stuff
  4. Cut and paste https://github.com/Cylix/cpp_redis/blob/master/examples/cpp_redis_client.cpp
  5. Build and run
  6. Watch the deadlock in tacopie::io_service::thread_pool::stop( ) line 85

unclevlad avatar Jun 24 '18 00:06 unclevlad

We have tried:

Increasing the number of workers via cpp_redis::network::set_default_nb_workers - No impact

Call client.disconnect( false ) - Throws an exception "Microsoft C++ exception: tacopie::tacopie_error at memory location 0x007FF318."

Call client.disconnect( true ) - Changes location of hang to tacopie::io_service::wait_for_removal line 348

unclevlad avatar Jun 24 '18 00:06 unclevlad

During more testing and debugging, we encountered several sparadic, but inconsistent, instances of

f:\dd\vctools\crt\crtw32\stdcpp\thr\mutex.c(51): mutex destroyed while busy

which is mentioned in at least one other open issue.

unclevlad avatar Jun 24 '18 21:06 unclevlad

This appears to be an issue with the version deployed via vcpkg. I cloned the current repository, built it, and the examples work.

unclevlad avatar Jun 25 '18 16:06 unclevlad

Hi,

Sorry for the delayed response. This library does not officially support the vcpkg package, so I am not sure how cpp_redis is available on it, and thus which version is packaged.

I will keep the issue opened though: seems this is not the first time someone request cpp_redis to be available on vcpkg, so better officially support it than leaving a malfunctioned unofficial package out there.

Best

Cylix avatar Jun 27 '18 04:06 Cylix

Thank you for the response.

If there is anything I can do to support an official vcpkg, please let me know.

unclevlad avatar Jun 27 '18 04:06 unclevlad