Skip to content

Commit

Permalink
Merge branch 'release/8.0' into backport/pr-92937-to-release/8.0
Browse files Browse the repository at this point in the history
  • Loading branch information
eiriktsarpalis authored Oct 3, 2023
2 parents 557aea8 + 937cfcd commit 20e5a9d
Show file tree
Hide file tree
Showing 5 changed files with 26 additions and 14 deletions.
2 changes: 2 additions & 0 deletions eng/pipelines/common/evaluate-default-paths.yml
Original file line number Diff line number Diff line change
Expand Up @@ -241,6 +241,7 @@ jobs:
- src/mono/tools/*
- src/mono/wasi/*
- src/mono/wasm/debugger/*
- src/mono/wasm/host/*
- src/mono/wasm/Wasm.Build.Tests/*
- ${{ parameters._const_paths._wasm_pipelines }}
- ${{ parameters._const_paths._always_exclude }}
Expand All @@ -258,6 +259,7 @@ jobs:
- eng/testing/workloads-testing.targets
- src/mono/mono/component/mini-wasm-debugger.c
- src/mono/wasm/debugger/*
- src/mono/wasm/host/*
- src/mono/wasm/Wasm.Build.Tests/*
- src/mono/nuget/Microsoft.NET.Runtime*
src/mono/nuget/Microsoft.NET.Sdk.WebAssembly.Pack/*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,8 @@ private void CommitDispatchConfiguration()
new EventPipeProviderConfiguration(NativeRuntimeEventSource.EventSourceName, (ulong)aggregatedKeywords, (uint)enableLevel, null)
};

m_sessionID = EventPipeInternal.Enable(null, EventPipeSerializationFormat.NetTrace, DefaultEventListenerCircularMBSize, providerConfiguration);
if (m_sessionID == 0)
ulong sessionID = EventPipeInternal.Enable(null, EventPipeSerializationFormat.NetTrace, DefaultEventListenerCircularMBSize, providerConfiguration);
if (sessionID == 0)
{
throw new EventSourceException(SR.EventSource_CouldNotEnableEventPipe);
}
Expand All @@ -113,7 +113,7 @@ private void CommitDispatchConfiguration()
EventPipeSessionInfo sessionInfo;
unsafe
{
if (!EventPipeInternal.GetSessionInfo(m_sessionID, &sessionInfo))
if (!EventPipeInternal.GetSessionInfo(sessionID, &sessionInfo))
{
Debug.Fail("GetSessionInfo returned false.");
}
Expand All @@ -124,8 +124,11 @@ private void CommitDispatchConfiguration()
long syncTimeQPC = sessionInfo.StartTimeStamp;
long timeQPCFrequency = sessionInfo.TimeStampFrequency;

Debug.Assert(Volatile.Read(ref m_sessionID) == 0);
Volatile.Write(ref m_sessionID, sessionID);

// Start the dispatch task.
StartDispatchTask(m_sessionID, syncTimeUtc, syncTimeQPC, timeQPCFrequency);
StartDispatchTask(sessionID, syncTimeUtc, syncTimeQPC, timeQPCFrequency);
}

private void StartDispatchTask(ulong sessionID, DateTime syncTimeUtc, long syncTimeQPC, long timeQPCFrequency)
Expand All @@ -147,10 +150,11 @@ private void SetStopDispatchTask()
return;
}

Debug.Assert(m_sessionID != 0);
ulong sessionID = Volatile.Read(ref m_sessionID);
Debug.Assert(sessionID != 0);
m_dispatchTaskCancellationSource.Cancel();
EventPipeInternal.SignalSession(m_sessionID);
m_sessionID = 0;
EventPipeInternal.SignalSession(sessionID);
Volatile.Write(ref m_sessionID, 0);
}

private unsafe void DispatchEventsToEventListeners(ulong sessionID, DateTime syncTimeUtc, long syncTimeQPC, long timeQPCFrequency, Task? previousDispatchTask, CancellationToken token)
Expand Down Expand Up @@ -190,12 +194,17 @@ private unsafe void DispatchEventsToEventListeners(ulong sessionID, DateTime syn
}
}

lock (m_dispatchControlLock)
// Wait for SignalSession() to be called before we call disable, otherwise
// the SignalSession() call could be on a disabled session.
SpinWait sw = default;
while (Volatile.Read(ref m_sessionID) == sessionID)
{
// Disable the old session. This can happen asynchronously since we aren't using the old session
// anymore. We take the lock to make sure we don't call SignalSession on an invalid session ID.
EventPipeInternal.Disable(sessionID);
sw.SpinOnce();
}

// Disable the old session. This can happen asynchronously since we aren't using the old session
// anymore.
EventPipeInternal.Disable(sessionID);
}

/// <summary>
Expand Down
2 changes: 1 addition & 1 deletion src/mono/wasm/host/BrowserHost.cs
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ private async Task RunAsync(ILoggerFactory loggerFactory, CancellationToken toke
debugging: _args.CommonConfig.Debugging);
runArgsJson.Save(Path.Combine(_args.CommonConfig.AppPath, "runArgs.json"));

string[] urls = envVars.TryGetValue("ASPNETCORE_URLS", out string? aspnetUrls)
string[] urls = (envVars.TryGetValue("ASPNETCORE_URLS", out string? aspnetUrls) && aspnetUrls.Length > 0)
? aspnetUrls.Split(';', StringSplitOptions.RemoveEmptyEntries)
: new string[] { $"http://127.0.0.1:{_args.CommonConfig.HostProperties.WebServerPort}", "https://127.0.0.1:0" };

Expand Down
3 changes: 2 additions & 1 deletion src/mono/wasm/host/DevServer/DevServer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,8 @@ internal static class DevServer
services.AddSingleton(Options.Create(options));
services.AddSingleton(realUrlsAvailableTcs);
services.AddRouting();
});
})
.UseUrls(options.Urls);


IWebHost? host = builder.Build();
Expand Down
2 changes: 1 addition & 1 deletion src/mono/wasm/host/RuntimeConfigJson.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ internal sealed record WasmHostProperties(
int? FirefoxDebuggingPort,
int? ChromeProxyPort,
int? ChromeDebuggingPort,
int WebServerPort = 9000)
int WebServerPort = 0)
{
// using an explicit property because the deserializer doesn't like
// extension data in the record constructor
Expand Down

0 comments on commit 20e5a9d

Please sign in to comment.