- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I hve a C++ test named WoogeenJoinLeaveConsoleTest of Join/Leave conference operation (source link is below in the second nessage), which was created because this sequence caused crashes in debug verson of SDK 3.2.1. Looks like there is a bug in the woogeen library, which reveal itself in the following way.
ConferenceClient has ConferenceClientObserver attached, which monitors variuos asynchronous events. After performing Join / leave operation and then new Join, this events, monitored by ConferenceClientObserver are invoked several times, the more Join / Leave sequences performed, the more duplicate events invoked and finally crash occure. Crash may also occure on program closing.
The example log for such join leave sequence is here. Notice multiple "Server disconnected" message after each "Leave" operarion, starting from second "Leave". These messages are highlighted by bold font. This messeges produced in ConferenceClientObserver::OnServerDisconnected method.
[2016-11-29 17:56:36] [devel] endpoint constructor
[2016-11-29 17:56:36] [devel] client constructor
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: origin, content-type
Content-Type: text/html; charset=utf-8
Content-Length: 244
ETag: W/"f4-OrMA+G/E3fi6mvJ0fwdeGg"
Date: Tue, 29 Nov 2016 13:56:43 GMT
Connection: close
token = eyJ0b2tlbklkIjoiNTgzZDg5MWJhZTZkMjQ0ZjY1ZWEyN2ZlIiwiaG9zdCI6IjUyLjc4LjQwLjEwOTo4MDgwIiwic2VjdXJlIjp0cnVlLCJzaWduYXR1cmUiOiJOelUzWXpZME1UazJNamxoWVRBMVptRmhPREUzWW1Nd01UVmhNV0k1TnpVeVlXTmpNekE0T0RFM01USmtaV0psTlRNeE1tSXpOVGcxWW1KbU16azJOQT09In0=
Join...
[2016-11-29 17:56:37] [connect] Successful connection
[2016-11-29 17:56:38] [connect] WebSocket Connection 52.78.40.109:8080 v-2 "WebSocket++/0.7.0" /socket.io/?EIO=4&transport=websocket&t=1480427797 101
Connected.
On handshake,sid:y-KeWLxCrohDWq1cAABU,ping interval:25000,ping timeout60000
Received Message type (Connect)
encoded payload length:181
Received Message type (ACK)
Message length: 2
Join succeeded!
User joined, id = /#y-KeWLxCrohDWq1cAABU, name = user, role = presenter
.RemoteMixedStream added, stream id: 583679da2154e954378707ce.
Subscribing to RemoteMixedStream...
Leave...
encoded payload length:2
encoded payload length:85
Close by reason:End by user
Client Disconnected.
clear timers
Leave succeeded!
Server disconnected
[2016-11-29 17:56:40] [disconnect] Disconnect close local:[1000,End by user] remote:[1000,End by user]
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: origin, content-type
Content-Type: text/html; charset=utf-8
Content-Length: 244
ETag: W/"f4-O9hR/rbUTg1x8GfUgMiN9A"
Date: Tue, 29 Nov 2016 13:56:47 GMT
Connection: close
token = eyJ0b2tlbklkIjoiNTgzZDg5MWZhZTZkMjQ0ZjY1ZWEyN2ZmIiwiaG9zdCI6IjUyLjc4LjQwLjEwOTo4MDgwIiwic2VjdXJlIjp0cnVlLCJzaWduYXR1cmUiOiJOMlF5TlRrMVptTTFOR1U0WmpZelpESTRaR1UxTXpoak9HUXdZVEptWVdJM1pUYzNOak14WTJFMk9HVmlaV0l4WlRJeE16QTNPREJoTTJVNU5EUXpZUT09In0=
Join...
[2016-11-29 17:56:42] [connect] Successful connection
[2016-11-29 17:56:43] [connect] WebSocket Connection 52.78.40.109:8080 v-2 "WebSocket++/0.7.0" /socket.io/?EIO=4&transport=websocket&t=1480427802 101
Connected.
On handshake,sid:9Bs9te7CH9VYeupdAABV,ping interval:25000,ping timeout60000
Received Message type (Connect)
encoded payload length:181
Received Message type (ACK)
Message length: 2
Join succeeded!
User joined, id = /#9Bs9te7CH9VYeupdAABV, name = user, role = presenter
.RemoteMixedStream added, stream id: 583679da2154e954378707ce.
Subscribing to RemoteMixedStream...
Leave...
encoded payload length:2
encoded payload length:85
Close by reason:End by user
Client Disconnected.
clear timers
Leave succeeded!
Server disconnected
Server disconnected
[2016-11-29 17:56:44] [disconnect] Disconnect close local:[1000,End by user] remote:[1000,End by user]
X-Powered-By: Express
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: origin, content-type
Content-Type: text/html; charset=utf-8
Content-Length: 244
ETag: W/"f4-trLyeTkPG9rURXkJk0445g"
Date: Tue, 29 Nov 2016 13:56:52 GMT
Connection: close
token = eyJ0b2tlbklkIjoiNTgzZDg5MjRhZTZkMjQ0ZjY1ZWEyODAwIiwiaG9zdCI6IjUyLjc4LjQwLjEwOTo4MDgwIiwic2VjdXJlIjp0cnVlLCJzaWduYXR1cmUiOiJNMlV6T0dZeU9ESTNNRFJpTkRRME1UVTRPV0U1WlRabU1qTmxNalk0WmpWbVl6UmhZakl3TVdGaE9UZG1OelF4TWpsa1pETmtOekl3TTJFM1ltSm1NZz09In0=
Join...
[2016-11-29 17:56:47] [connect] Successful connection
[2016-11-29 17:56:48] [connect] WebSocket Connection 52.78.40.109:8080 v-2 "WebSocket++/0.7.0" /socket.io/?EIO=4&transport=websocket&t=1480427807 101
Connected.
On handshake,sid:2JKr9kMNUITwgtGBAABW,ping interval:25000,ping timeout60000
Received Message type (Connect)
encoded payload length:181
Received Message type (ACK)
Message length: 2
Join succeeded!
User joined, id = /#2JKr9kMNUITwgtGBAABW, name = user, role = presenter
.RemoteMixedStream added, stream id: 583679da2154e954378707ce.
Subscribing to RemoteMixedStream...
encoded payload length:85
Leave...
encoded payload length:2
Close by reason:End by user
Client Disconnected.
clear timers
Leave succeeded!
Server disconnected
Server disconnected
Server disconnected
[2016-11-29 17:56:49] [disconnect] Disconnect close local:[1000,End by user] remote:[1000,End by user]
- Tags:
- HTML5
- JavaScript*
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Here is the link to full source of this test for Visual Studio 2015:
https://www.dropbox.com/s/elisptk2m70tt5u/WoogeenJoinLeaveTest_2016_11_29.zip?dl=0
This test performs ten Join / Leave operations and finally going out of loop. Usually it crashes in debug version on program termination, for example in this location (boost library):
std::size_t boost::asio::basic_deadline_timer::cancel()
{
boost::system::error_code ec;
std::size_t s = this->service.cancel(this->implementation, ec); // !!! crash line
boost::asio::detail::throw_error(ec, "cancel");
return s;
}
This solution contains sioclient_tls library built form three sources: socket.io-client-cpp, rapidjson and websocketpp, taken from:
https://github.com/socketio/socket.io-client-cpp
https://github.com/miloyip/rapidjson
https://github.com/zaphoyd/websocketpp
The library was compiled with following symbols defined:
SIO_TLS=1
NOMINMAX
_WEBSOCKETPP_CPP11_FUNCTIONAL_
_WEBSOCKETPP_CPP11_SYSTEM_ERROR_
_WEBSOCKETPP_CPP11_RANDOM_DEVICE_
_WEBSOCKETPP_CPP11_MEMORY_
Aslo, sioclient_tls uses OpenSSL 1.0.2 (the latest OpenSSL 1.1.0 lost backward compatibility) and Boost.
https://www.openssl.org/
http://www.boost.org/
The easiest way to use OpenSSL and Boost is to obtain precompiled binaries. This project exists only as 32-bit version for Visual Studio 2015, so the binaries preferred to be compiled specifically for this version of Visual Studio.
OpenSSL binary can be obtained from the following page, required package is Win32 OpenSSL v1.0.2 (about 30 MB, full, not light version):
https://slproweb.com/products/Win32OpenSSL.html
Looks like these binaries of OpenSSL compiled by VS2013, but they works. Install OpenSSL to default location, used by this project:
C:\OpenSSL-Win32
Boost binaries can be obtained here:
https://sourceforge.net/projects/boost/files/boost-binaries/
For this project I used 32-bit version 1.62.0 (the 1.63.0 beta is already available) for VS2015, specific link is
The Boost library should be installed in C:\boost_1_62_0
this location is also used by this project.
Additionally, for WoogeenJoinLeaveTest Woogeen library must be placed to specific location on the hard drive:
C:\WoogeenSDKCpp
This folder must contain two subfolders, "include" and "libs". "libs" subfolder must contain two version of woogeen library, woogeen-debug.lib and woogeen-release.lib.
The SDK can be downloaded after subscription here:
https://software.intel.com/en-us/webrtc-sdk
"include" and "libs" folders are extracted from the following archive:
CS_WebRTC_Client_SDK_Windows.v3.2.1.zip
If you already have these libraries in other locations, you may edit *.vcxproj files of the project and replace
C:\OpenSSL-Win32
C:\boost_1_62_0
C:\WoogeenSDKCpp
by other paths. Also, if you use other boost library then 1.62, then you may replace 1_62 to other value in *.vcxproj files.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for reporting this. It is a known issue and we will provide fix in coming 3.3 release around middle January.

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page