Skip to content

Increase symbol server download timeout, and report when downloading symbols #602

Closed
@tmds

Description

@tmds

I opened up a coredump and executed the clrstack command.
dotnet dump seemed to hang.

After waiting for some more time, eventually it threw an exception.

Unhandled Exception: System.Threading.Tasks.TaskCanceledException: The operation was canceled. ---> System.IO.IOException: Unable to read data from the transport connection: Operation canceled. ---> System.Net.Sockets.SocketException: Operation canceled
   --- End of inner exception stack trace ---
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error)
   at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
   at System.Net.Security.SslStreamInternal.<FillBufferAsync>g__InternalFillBufferAsync|38_0[TReadAdapter](TReadAdapter adap, ValueTask`1 task, Int32 min, Int32 initial)
   at System.Net.Security.SslStreamInternal.ReadAsyncInternal[TReadAdapter](TReadAdapter adapter, Memory`1 buffer)
   at System.Net.Http.HttpConnection.FillAsync()
   at System.Net.Http.HttpConnection.CopyToExactLengthAsync(Stream destination, UInt64 length, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnection.ContentLengthReadStream.CompleteCopyToAsync(Task copyTask, CancellationToken cancellationToken)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpConnection.ContentLengthReadStream.CompleteCopyToAsync(Task copyTask, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnection.HttpConnectionResponseContent.SerializeToStreamAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)
   at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Microsoft.SymbolStore.SymbolStores.HttpSymbolStore.GetFileStream(Uri requestUri, CancellationToken token)
   at Microsoft.SymbolStore.SymbolStores.HttpSymbolStore.GetFileInner(SymbolStoreKey key, CancellationToken token)
   at Microsoft.SymbolStore.SymbolStores.SymbolStore.GetFile(SymbolStoreKey key, CancellationToken token)
   at Microsoft.SymbolStore.SymbolStores.SymbolStore.GetFile(SymbolStoreKey key, CancellationToken token)
   at SOS.SymbolReader.GetSymbolStoreFile(SymbolStoreKey key) in /_/src/SOS/SOS.NETCore/SymbolReader.cs:line 1009
   at SOS.SymbolReader.GetSymbolFile(SymbolStoreKey key) in /_/src/SOS/SOS.NETCore/SymbolReader.cs:line 327
   at SOS.SymbolReader.LoadNativeSymbols(SymbolFileCallback callback, IntPtr parameter, String moduleFilePath, UInt64 address, Int32 size, ReadMemoryDelegate readMemory) in /_/src/SOS/SOS.NETCore/SymbolReader.cs:line 300
   at SOS.LLDBServices.LoadNativeSymbols2(IntPtr self, Boolean runtimeOnly, ModuleLoadCallback callback) in /_/src/SOS/SOS.Hosting/LLDBServices.cs:line 180
   at SOS.SOSHost.ExecuteCommand(String command, String arguments) in /_/src/SOS/SOS.Hosting/SOSHost.cs:line 318
   at Microsoft.Diagnostics.Tools.Dump.SOSCommand.Invoke() in /_/src/Tools/dotnet-dump/Commands/SOSCommand.cs:line 60

It seems I reached a 4 minute timeout.
For my dump, it was downloading a file 70 MB file (http://msdl.microsoft.com/download/symbols/_.debug/elf-buildid-sym-01d29c608f8df7d0234a8ca1a47bf377eb0c9f25/_.debug). So if my connection speed was on average below 300KB/s, the download times out.

Should this limit be increased?

The UX would be nicer if the tool reports it is downloading symbols, and then leaves it to the user to abort by pressing Ctrl+C.

cc @mikem8361

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions