Skip to content
This repository has been archived by the owner on Apr 6, 2019. It is now read-only.

Sample client deadlocks using vcpkg and Visual Studio 2017 #184

Open
unclevlad opened this issue Jun 24, 2018 · 5 comments
Open

Sample client deadlocks using vcpkg and Visual Studio 2017 #184

unclevlad opened this issue Jun 24, 2018 · 5 comments

Comments

@unclevlad
Copy link

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
Copy link
Author

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
Copy link
Author

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
Copy link
Author

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

@Cylix
Copy link
Owner

Cylix commented Jun 27, 2018

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

@unclevlad
Copy link
Author

unclevlad commented Jun 27, 2018 via email

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants