Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Official 4.0 Beta Discussion Thread
#21
That may be another side effect. I'll look at that also. Oh, the tangled webs we weave when we program for GUIs.
Dean Roddey
Explorans limites defectum
#22
Well it turns out there's a subtle bug in the socket stuff in 3.4.x. It was one of those things where there was a subtle bug to start with, which was fixed. But then it turned out that a couple other places had unknowingly compensated for this bug, which then broke them when the bug was fixed. Sigh... So a server can go down and the client might not recognize this fact and still think it's connected, so it won't try to reconnect.

Obviously this is not good. As a rule it would mostly likely only affect IP based drivers that don't poll their devices, i.e. they depend on async notifications. If the client sends something that expects a response, it'll obviously figure out the other guy isn't there. But if he doesn't, he won't notice during reads that the other side has gone away.

I put up a 3.4.3 for someone who was experiencing the problem to try it out. If that works, I'll post it for others to install. I'll probably need to heavily recommend that folks upgrade to this version. Sorry about that. Believe me, I hate it more than you since it's a lot of work for me to have to do these follow up releases for small amounts of fixes. Somehow these things manage to never get caught until after the big release is done, no matter how many people are using the betas.
Dean Roddey
Explorans limites defectum
#23
OK, 3.4.3 is available now. I'd recommend upgrading to this one because of the issue discussed in the previous post. The changes since 3.4.2 are:
  • There's an issue in the socket class, which won't catch a disconnected socket correctly in all cases, so things can get stuck thinking they are still connected when they are not. This is a subtle but possibly evil bug that could cause non-obvious system problems. So probably everyone is going to need to upgrade to this one, sigh...
  • The new control panel button for the logic server doesn't work.

You can download it for now here, I'll make it the formal release after some folks have verified it's happy.

http://www.charmedquark.com/Web2/Downloa..._3_4_3.Zip
Dean Roddey
Explorans limites defectum
#24
OK, well I went back and really dug into the whole socket thing. There have been a number of things that maybe could have been related to corner cases in the socket processing, etc... It's come up in the HTTP client stuff, and in a few other places.

So I just wanted to really readdress it and make sure it was right. So here's another drop, which I think should be very solid on the networking front and take care of those types of cases. It should also be a bit quicker on noticing lost connections, and a bit more robust in general wrt to networking stuff.

Anyone want to give this guy a try and let me know how it works? I'd like to get it out there as the official release if possible.

http://www.charmedquark.com/Web2/Downloa..._3_4_4.Zip

The changes are:
  • Deal conclusively with the issue of socket disconnection detection and get that stuff straightened out and robustified fully.
  • The CML level socket SetLinger method takes millis, but the underlying method takes seconds. Currently the millis are just being passed in, for a lot of seconds. It should be converting to seconds.
  • Correct the max volume of the Yamaha A-1000 driver's volume field range.

I beat on it hard, but of course there may always be some something off the the normal path that I might have upset, but I don't think that should be the case. If so, I can fix it quickly, but overall these changes will be worth it in the long run, so it would be nice to get some feedback on it so that I can get it out there as the status quo.
Dean Roddey
Explorans limites defectum
#25
Dean I am getting the following error when I exit taRIVA (OTA) or iRIVA (WiFi), don't recall getting this before...

Code:
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 8
}
11/30 11:44:44-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr16
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 15
}
11/30 11:45:04-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr16
{
    CIDSock, CIDSock_StreamSocket.cpp.663, Failed/Lost Connection, Error: 5017/1021/10053
    The connect was aborted by the other side
    Connection aborted
}
11/30 11:46:01-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr9
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 8
}
11/30 11:49:16-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr16
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 15
}
11/30 11:49:42-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr11
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 10
}
11/30 11:50:00-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr11
{
    CIDSock, CIDSock_StreamSocket.cpp.663, Failed/Lost Connection, Error: 5017/1021/10053
    The connect was aborted by the other side
    Connection aborted
}
11/30 11:50:26-ncc1701-d, CQCRemVSrv, CQCRemVSrvWThr9
{
    CQCRemVSrv, CQCRemVSrv_WorkerThread.cpp.1835, Failed/App Status
    An exception occured in the service loop of worker thread 8
}

Same error for both clients. Also note the aborted message, this occurs with the taRIVA client but not at time of application exit. Since OTA, most likely it is a reconnect due to a lost handshake packet or something of the sort.

-Ben
#26
What version are you running? Is it the new version I just posted above?
Dean Roddey
Explorans limites defectum
#27
Dean Roddey Wrote:What version are you running? Is it the new version I just posted above?

Hi Dean, sorry, it's 3.4.4
-Ben
#28
OK. It may just be that the RIVA client isn't doing a graceful shutdown, but just closing the socket. That might not have actually been reported before and now it is. It's not going to hurt anything, but probably it would go away if the RIVA client did a graceful shutdown (where you read any outstanding data, then disconnect, then close, the standard thing.) On a graceful shutdown it would likely get the standard disconnected error on my side, which I specifically don't log because it's expected. Since it's getting the aborted, it's getting logged. I could do the same for that error, but it's probably best to keep it there until we see if it's really caused by a non-graceful shutdown, or just ending the program perhaps without shutting down the socket.
Dean Roddey
Explorans limites defectum
#29
Dean Roddey Wrote:OK. It may just be that the RIVA client isn't doing a graceful shutdown, but just closing the socket. That might not have actually been reported before and now it is. It's not going to hurt anything, but probably it would go away if the RIVA client did a graceful shutdown (where you read any outstanding data, then disconnect, then close, the standard thing.) On a graceful shutdown it would likely get the standard disconnected error on my side, which I specifically don't log because it's expected. Since it's getting the aborted, it's getting logged. I could do the same for that error, but it's probably best to keep it there until we see if it's really caused by a non-graceful shutdown, or just ending the program perhaps without shutting down the socket.

Okay, well, both Apple IOS and Android clients are doing the same thing...
#30
Dean Roddey Wrote:Deal conclusively with the issue of socket disconnection detection and get that stuff straightened out and robustified fully.
Currently, the SageTV drivers figure that the connection was lost when they don't receive data (i.e. ping) for a certain amount of time, but do you mean that there is the equivalent of a OnDisconnect() available somewhere for third party drivers?
Field Generator 0.65: Create CQC fields on the fly, from external applications.
Mobile templates 0.4: Main resolution of 320x480 with navigation side bars (384x544).
Sage Media Server 1.1.3 + Sage Player 2.7.8: Display and manipulate SageTV information or player.
TaRIVA 1.26: Android RIVA client.


Possibly Related Threads...
Thread Author Replies Views Last Post
  Official 5.4 Beta Discussion Thread Dean Roddey 441 40,418 06-15-2019, 02:33 AM
Last Post: Bugman
  Official 5.4 Beta Release Thread Dean Roddey 55 7,299 06-07-2019, 07:02 PM
Last Post: Dean Roddey
  Official 5.3 Beta Discussion Thread Dean Roddey 815 151,112 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.3 Release Thread Dean Roddey 27 7,898 07-05-2018, 12:44 PM
Last Post: Dean Roddey
  Official 5.2 Beta Discussion Thread Dean Roddey 244 87,586 10-14-2017, 07:57 PM
Last Post: Dean Roddey
  Official 5.2 Beta Release Thread Dean Roddey 13 8,797 10-09-2017, 06:49 PM
Last Post: Dean Roddey
  Official 5.1 Beta Discussion Thread Dean Roddey 453 196,385 05-16-2017, 03:45 PM
Last Post: Dean Roddey
  Official 5.1 Beta Release Thread Dean Roddey 28 19,444 05-12-2017, 05:44 PM
Last Post: Dean Roddey
  Official 5.0 Beta Discussions Dean Roddey 2,019 488,967 11-09-2016, 04:34 PM
Last Post: Dean Roddey
  Official 5.0 Beta Release Thread Dean Roddey 15 13,266 11-01-2016, 10:32 AM
Last Post: Dean Roddey

Forum Jump:


Users browsing this thread: 1 Guest(s)