Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5.0.100-preview.6.20308.7] OpenMu button disabled #37640

Closed
DotNetAppCompatFeiWang opened this issue Jun 9, 2020 · 13 comments
Closed

[5.0.100-preview.6.20308.7] OpenMu button disabled #37640

DotNetAppCompatFeiWang opened this issue Jun 9, 2020 · 13 comments
Assignees
Milestone

Comments

@DotNetAppCompatFeiWang
Copy link

DotNetAppCompatFeiWang commented Jun 9, 2020

Application Name: Open Mu
OS: Windows 10 RS5
CPU: X64
.NET Build Number: 5.0.100-preview.6.20308.7
App Location: On repro machine, at C:\Users\appcompat\Documents\OpenMU

App Source : On repro machine, at C:\Users\appcompat\Documents\OpenMUSource

App Source on GitHub link: https://github.com/MUnique/OpenMU

Verify Scenarios:
1). Windows 10 RS5 X64 + .NET Core SDK build 5.0.100-preview.6.20308.7: Fail
2). Windows 10 RS5 X64 + .NET Core SDK build 5.0.100-preview.5.20279.10: Pass
3). Windows 10 RS5 X64 + .NET Core SDK build 3.1.300 Pass

Repo Machine Environment Info :
.NET SDK (reflecting any global.json):
Version: 5.0.100-preview.6.20306.2
Commit: ca518bb33e

Runtime Environment:
OS Name: Windows
OS Version: 10.0.18363
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\5.0.100-preview.6.20306.2\

Host (useful for support):
Version: 5.0.0-preview.6.20305.6
Commit: 4ba9eca

.NET SDKs installed:
3.1.300 [C:\Program Files\dotnet\sdk]
5.0.100-preview.6.20306.2 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.All 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 5.0.0-preview.6.20305.3 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.1.18 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 5.0.0-preview.6.20305.6 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 5.0.0-preview.6.20305.4 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Repro steps:
On the repo machine (10.159.67.185)

  1. On CMD, navigate to C:\Users\appcompat\Documents\OpenMU
  2. Run : dotnet MUnique.OpenMU.Startup.dll
  3. Wait for admin panel to initialize
    4)In Browser, Open http://localhost:1234/admin

Since "C:\Users\appcompat\Documents\OpenMU\MUnique.OpenMU.Startup.runtimeconfig.json" set to .net5 , app will use .NET5 runtime. This is issue is not repro on .NET Core 3

Expected Result:
Should be able to click StartButton, when we move cursor on top of button, click is disabled
Players should have number ex: 1/1000 instead of /1000
Total Players should be 0 instead of NaN

See Attachment : ExpectedOpenMu.png

Actual Result:
See Attachment : ActualOpenMu.png

Findings :
We think this is related to serialization, we serialize same object with .net core 3 and 5 with, it gets different results, see attachment for full json.
string jsonString = JsonSerializer.Serialize(currentConnectServerInfos);

.net core 3 :

{

      "settings":{
         "Id":"1aebf70c-7ffa-4090-a912-fddee43cd7be",
         "client":{
            "Id":"cbcb50a0-8e2a-4c05-81b7-5ed1c74c0f8d",
            "Season":6,
            "Episode":3,
            "Language":1,
            "Version":"MTA0MDQ=",
            "Serial":"azFQazJqY0VUNDhteEwzYg==",
            "Description":"Season 6 Episode 3 GMO Client"
         },
         "ServerId":0,
         "Description":"Connect Server (Season 6 Episode 3 English)",
         "DisconnectOnUnknownPacket":true,
         "MaximumReceiveSize":6,
         "ClientListenerPort":44405,
         "Timeout":{
            "Ticks":600000000,
            "Days":0,
            "Hours":0,
            "Milliseconds":0,
            "Minutes":1,
            "Seconds":0,
            "TotalDays":0.0006944444444444445,
            "TotalHours":0.016666666666666666,
            "TotalMilliseconds":60000,
            "TotalMinutes":1,
            "TotalSeconds":60
         },
         "CurrentPatchVersion":"AQMr",
         "PatchAddress":"patch.muonline.webzen.com",
         "MaxConnectionsPerAddress":30,
         "CheckMaxConnectionsPerAddress":true,
         "MaxConnections":10000,
         "ListenerBacklog":100,
         "MaxFtpRequests":1,
         "MaxIpRequests":5,
         "MaxServerListRequests":20
      },
      "Id":65536,
      "Description":"Connect Server (Season 6 Episode 3 English)",
      "State":0,
      "OnlinePlayerCount":0,
      "MaximumPlayers":10000,
      "Type":2
   }

.NET 5 Prev 6 :

{

      "settings":{
         "Id":"1aebf70c-7ffa-4090-a912-fddee43cd7be",
         "client":{
            "Id":"cbcb50a0-8e2a-4c05-81b7-5ed1c74c0f8d",
            "Season":6,
            "Episode":3,
            "Language":1,
            "Version":"MTA0MDQ=",
            "Serial":"azFQazJqY0VUNDhteEwzYg==",
            "Description":"Season 6 Episode 3 GMO Client"
         },
         "Client":{
            "Season":6,
            "Episode":3,
            "Language":1,
            "Version":"MTA0MDQ=",
            "Serial":"azFQazJqY0VUNDhteEwzYg==",
            "Description":"Season 6 Episode 3 GMO Client"
         },
         "ServerId":0,
         "Description":"Connect Server (Season 6 Episode 3 English)",
         "DisconnectOnUnknownPacket":true,
         "MaximumReceiveSize":6,
         "ClientListenerPort":44405,
         "Timeout":{
            "Ticks":600000000,
            "Days":0,
            "Hours":0,
            "Milliseconds":0,
            "Minutes":1,
            "Seconds":0,
            "TotalDays":0.0006944444444444445,
            "TotalHours":0.016666666666666666,
            "TotalMilliseconds":60000,
            "TotalMinutes":1,
            "TotalSeconds":60
         },
         "CurrentPatchVersion":"AQMr",
         "PatchAddress":"patch.muonline.webzen.com",
         "MaxConnectionsPerAddress":30,
         "CheckMaxConnectionsPerAddress":true,
         "MaxConnections":10000,
         "ListenerBacklog":100,
         "MaxFtpRequests":1,
         "MaxIpRequests":5,
         "MaxServerListRequests":20
      },
      "Id":65536,
      "Description":"Connect Server (Season 6 Episode 3 English)",
      "State":0,
      "OnlinePlayerCount":0,
      "MaximumPlayers":10000,
      "Type":2
   }

Repro machine could be found at: https://devdiv.visualstudio.com/DevDiv/_workitems/edit/1138494

cc @dotnet-actwx-bot

@Dotnet-GitSync-Bot
Copy link
Collaborator

I couldn't figure out the best area label to add to this issue. Please help me learn by adding exactly one area label.

@Dotnet-GitSync-Bot Dotnet-GitSync-Bot added the untriaged New issue has not been triaged by the area owner label Jun 9, 2020
@danmoseley
Copy link
Member

@DotNetAppCompatFeiWang thanks, note you can add triple back ticks (`) on their own line to get pretty formatting, I did that above. https://github.github.com/gfm/#fenced-code-blocks

@danmoseley
Copy link
Member

I don't have context here but the diff between the two blocks above is the addition of this

         "Client":{
            "Season":6,
            "Episode":3,
            "Language":1,
            "Version":"MTA0MDQ=",
            "Serial":"azFQazJqY0VUNDhteEwzYg==",
            "Description":"Season 6 Episode 3 GMO Client"
         },

@danmoseley
Copy link
Member

@steveharter the suggestion here is that the JsonSerializer is emitting more JSON in Preview 6 than in Preview 5 and that it's causing a problem. Any thoughts about why that might be, since the app did not change?

1). Windows 10 RS5 X64 + .NET Core SDK build 5.0.100-preview.6.20308.7: Fail
2). Windows 10 RS5 X64 + .NET Core SDK build 5.0.100-preview.5.20279.10: Pass
3). Windows 10 RS5 X64 + .NET Core SDK build 3.1.300 Pass

@danmoseley
Copy link
Member

BTW ther'es a bit more info in the internal link above.

@layomia
Copy link
Contributor

layomia commented Jun 10, 2020

This is related to #36936.


JsonSerializer is emitting more JSON

The change at the heart of this issue is #32107 which added code to enable edge-case scenarios like the following (i.e to serialize a public property that was hidden by a non-public property):

var obj = new ClassWithNewSlotPrivateProperty();
string json = JsonSerializer.Serialize(obj);
public class ClassWithPublicProperty
{
    public string MyString { get; set; } = "DefaultValue";
}

public class ClassWithNewSlotPrivateProperty : ClassWithPublicProperty
{
    private new string MyString { get; set; } = "NewDefaultValue";
}

Expected: {"MyString":"DefaultValue"} (5.0 output)
Actual: {} (3.x output)

Following the fix in #37720, it is only in the above edge-case scenario that the serializer will emit more output.

@layomia layomia removed the untriaged New issue has not been triaged by the area owner label Jun 10, 2020
@layomia layomia added this to the 5.0 milestone Jun 10, 2020
@layomia layomia self-assigned this Jun 10, 2020
@danmoseley
Copy link
Member

@DotNetAppCompatFeiWang looks like your diagnosis was correct, thanks for helping narrow this down to the correct component, that saves a huge amount of time.

@DotNetAppCompatFeiWang
Copy link
Author

@layomia can you please help to confirm the fix is merged to Preview7 branch? This issue still repro with the latest Preview7 build dotnet-sdk-5.0.100-preview.7.20351.2.

@DotNetAppCompatFeiWang
Copy link
Author

@layomia Just want to check again with you, can you please help to confirm the fix is merged to Preview7 branch? This issue still repro with the latest Preview7 build dotnet-sdk-5.0.100-preview.7.20351.2.

@danmoseley
Copy link
Member

The PR that was linked appears to be:

$ git rev-list upstream/release/5.0-preview7 | grep "^644f32d"
644f32d2a21420b020d773d5bb1c45532b26200b

@danmoseley
Copy link
Member

@layomia can you help with the question about the fix not working.

@layomia
Copy link
Contributor

layomia commented Jul 8, 2020

@DotNetAppCompatFeiWang @danmosemsft - sorry for the delay. I'm investigating why the issue is not fixed with this change #37720. I have the repro machine set up and will be in touch offline about getting the full suite of app compat tests that run the serializer.

My target for a fix, if any, would be the preview 8 snap on Jul 15. Depending on my investigation, we may have to document a breaking change for this and related edge case scenarios, and modify the tests accordingly.

@DotNetAppCompatFeiWang
Copy link
Author

Verify this issue fixed in build dotnet-sdk-5.0.100-preview.8.20373.19-win-x64

@ghost ghost locked as resolved and limited conversation to collaborators Dec 8, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants