question

eswitzer07 avatar image
eswitzer07 asked

Libcurl Error 65: Unreal 4 SDK

Hi,

Trying to call Server.ExecuteCloudscript from our game server hosted on Multiplayer 2.0 with the GSDK. Most of the time it calls without issue, but we are running into a server crash where it seems libcurl throws an error 65.

I can't find too much documentation on the issue, other than a potential URL error, or request type mismatch, but that doesn't seem to be the case here.

We already have Verify Peer disabled in the Unreal libcurl settings. I'm not too familiar with libcurl in general, and was hoping someone could shed a bit of light on what could cause this issue.


[2020.03.17-15.34.07:976][262]LogHttp: Warning: 000001CC9DF9C540: request failed, libcurl error: 65 (Send failed since rewinding of the data stream failed)
[2020.03.17-15.34.07:976][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 0 (Connection 11 seems to be dead!)
[2020.03.17-15.34.07:976][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 1 (Closing connection 11)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 2 (TLSv1.2 (OUT), TLS alert, close notify (256):)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 3 (Found bundle for host 5746B.playfabapi.com: 0x1cca0b9f130 [can pipeline])
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 4 (Re-using existing connection! (#10) with host 5746B.playfabapi.com)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 5 (Connected to 5746B.playfabapi.com (52.37.144.240) port 443 (#10))
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 6 (We are completely uploaded and fine)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 7 (TLSv1.2 (IN), TLS alert, close notify (256):)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 8 (Connection died, retrying a fresh connect)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 9 (necessary data rewind wasn't possible)
[2020.03.17-15.34.07:977][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 10 (Closing connection 10)
[2020.03.17-15.34.07:978][262]LogHttp: Warning: 000001CC9DF9C540: libcurl info message cache 11 (TLSv1.2 (OUT), TLS alert, close notify (256):)
[2020.03.17-15.34.07:978][262]LogPlayFab: Error: Request failed: https://5746B.playfabapi.com/Server/ExecuteCloudScript?sdk=UE4MKPL-1.31.200121
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Seth Du avatar image
Seth Du answered
4 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

eswitzer07 avatar image eswitzer07 commented ·
  • We can't consistently repo it, it has just been happening once or twice in a 2-3 hour play session with our community. Its happening on Multiplayer 2.0 hosted servers, uploaded via CreateBuildWithManagedContainer from without our build tool.
  • Unreal / the game server crashes before the response is received. The event does not show in PlaySteam (we generate playstream event for this - screenshot attached) We call ExecuteCloudScript, with these same parameters throughout the match. Almost all of them succeeded without issue. The function in our cloudscript is "AddDeltaStats" - its called at most 1 time every 2 minutes (if there is a change in a character's stats during the game), for each player (up to 4). Sometimes we get timeouts, but we have error handling in place in our server logic for that.
  • Windows Core. Yea, we followed the information in the windows thread there, and our build tool merges the libraries without issue.

0 Likes 0 ·
logs.png (298.5 KiB)
Seth Du avatar image Seth Du ♦ eswitzer07 commented ·

If it only occurs very few times in 2-3 hours, I think it should be acceptable because RESTful API cannot guarantee 100% success. Usually there should be a retry mechanism in your code so that when the error occurs, the API call will be re-sent. In that case, you should also consider the interval time of re-sending because frequent API calls will be throttled.

0 Likes 0 ·
eswitzer07 avatar image eswitzer07 Seth Du ♦ commented ·

Yea, in most cases we have error handling, in this scenario though the entire game server crashes, so there is no way it can be re-sent.

The Libcurl DLL we are using, and the way its implemented is with the included cppgsdk

0 Likes 0 ·
Show more comments
eswitzer07 avatar image
eswitzer07 answered

Title ID: 5746B

BuildID: 4786552

Attached logs. I removed our title secret key from it, as it appeared in a few places. Had to also cut out a few things from the middle to get the size down, but the error is still there.

gameserver.txt


gameserver.txt (416.7 KiB)
2 comments
10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Seth Du avatar image Seth Du ♦ commented ·

Thanks for the update. I will submit a report to the team and will keep you informed if there is any feedback.

0 Likes 0 ·
EON Publishers avatar image EON Publishers commented ·

Do you find solution or shall I move to AWS Gamelift?

0 Likes 0 ·
Seth Du avatar image
Seth Du answered

We have received the feedback from the team and due to lack of enough information about this issue, it is difficult for us to locate there the problem is. It is always a big challenge to troubleshoot issues that cannot be reproduced consistently. Here is my advice, please keep monitoring this issue for some days and find a way to reproduce it. It can be helpful that you create a sample project for us to reproduce this issue.

10 |1200

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Write an Answer

Hint: Notify or tag a user in this post by typing @username.

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.