Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
proton-dotnet-1.0.0-M4
-
None
Description
I see that the client occasionally crashes with the following exception on OpenSession call when using multiple (2+) connections:
Unhandled exception. Apache.Qpid.Proton.Client.Exceptions.ClientConnectionRemotelyClosedException: The key already existed in the dictionary.
I was unable to reproduce the issue with single connection. I'm attaching the reproducer (needs to be run multiple times to hit the issue) and the coredump. This was seen on RHEL8. The client was connecting to Red Hat AMQ 7.10.0.GA Broker.
full trace:
[root@dtests-rhel8x-tn-base Example.CreateSession]# PN_TRACE_FRM=1 dotnet run ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] -> SASL:[1435533887:0] AMQP,3,1,0,0 -> SASL:[-1465308719:0] AMQP,3,1,0,0 -> SASL:[784769366:0] AMQP,3,1,0,0 -> SASL:[-2054909097:0] AMQP,3,1,0,0 ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] <- SASL:[-1465308719:0] AMQP,3,1,0,0 <- SASL:[1435533887:0] AMQP,3,1,0,0 <- SASL:[1435533887:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[1435533887:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} -> SASL:[-2144030978:0] AMQP,3,1,0,0 -> SASL:[1188878611:0] AMQP,3,1,0,0 -> SASL:[1563351650:0] AMQP,3,1,0,0 -> SASL:[-1631994231:0] AMQP,3,1,0,0 -> SASL:[-607077024:0] AMQP,3,1,0,0 -> SASL:[1519399825:0] AMQP,3,1,0,0 <- SASL:[784769366:0] AMQP,3,1,0,0 <- SASL:[784769366:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[784769366:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} <- SASL:[-2054909097:0] AMQP,3,1,0,0 <- SASL:[-2054909097:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[-2054909097:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] <- SASL:[-2144030978:0] AMQP,3,1,0,0 <- SASL:[-2144030978:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[-2144030978:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] <- SASL:[1435533887:0] Ok -> AMQP:[1435533887:0] AMQP,0,1,0,0 <- SASL:[-2144030978:0] Ok -> AMQP:[-2144030978:0] AMQP,0,1,0,0 <- AMQP:[-2144030978:0] AMQP,0,1,0,0 <- AMQP:[1435533887:0] AMQP,0,1,0,0 -> AMQP:[-2144030978:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:6', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} -> AMQP:[1435533887:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- SASL:[-1631994231:0] AMQP,3,1,0,0 <- SASL:[-1631994231:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[-1631994231:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} <- SASL:[784769366:0] Ok -> AMQP:[784769366:0] AMQP,0,1,0,0 <- AMQP:[784769366:0] AMQP,0,1,0,0 -> AMQP:[784769366:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:3', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- SASL:[-2054909097:0] Ok -> AMQP:[-2054909097:0] AMQP,0,1,0,0 <- AMQP:[-2054909097:0] AMQP,0,1,0,0 -> AMQP:[-2054909097:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:4', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- SASL:[1519399825:0] AMQP,3,1,0,0 <- SASL:[1519399825:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[1519399825:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} <- SASL:[1563351650:0] AMQP,3,1,0,0 <- SASL:[1563351650:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[1563351650:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} <- SASL:[1188878611:0] AMQP,3,1,0,0 <- SASL:[1188878611:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[1188878611:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} <- SASL:[-607077024:0] AMQP,3,1,0,0 <- SASL:[-607077024:0] SaslMechanisms\{mechanisms=PLAIN,ANONYMOUS} -> SASL:[-607077024:0] SaslInit\{mechanismPLAIN, initialResponse="%00admin%00admin", hostname=} -> AMQP:[1435533887:0] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:1] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:2] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:3] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:4] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:5] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} -> AMQP:[1435533887:6] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} <- SASL:[-607077024:0] Ok -> AMQP:[-607077024:0] AMQP,0,1,0,0 <- AMQP:[-607077024:0] AMQP,0,1,0,0 -> AMQP:[-607077024:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:10', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- SASL:[1188878611:0] Ok -> AMQP:[1188878611:0] AMQP,0,1,0,0 <- SASL:[1563351650:0] Ok -> AMQP:[1563351650:0] AMQP,0,1,0,0 <- AMQP:[1188878611:0] AMQP,0,1,0,0 -> AMQP:[1188878611:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:5', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- AMQP:[1563351650:0] AMQP,0,1,0,0 -> AMQP:[1563351650:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:7', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] <- SASL:[-1631994231:0] Ok -> AMQP:[-1631994231:0] AMQP,0,1,0,0 <- AMQP:[-1631994231:0] AMQP,0,1,0,0 -> AMQP:[-1631994231:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:9', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- AMQP:[1435533887:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} -> AMQP:[784769366:0] Close\{error=Error{condition=amqp:internal-error, description='The key already existed in the dictionary.', info=}} <- AMQP:[-2054909097:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- SASL:[1519399825:0] Ok -> AMQP:[1519399825:0] AMQP,0,1,0,0 <- AMQP:[1519399825:0] AMQP,0,1,0,0 -> AMQP:[1519399825:0] Open\{ containerId='ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:8', hostname='localhost', maxFrameSize=65536, channelMax=65535, idleTimeOut=60000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=null, desiredCapabilities=Apache.Qpid.Proton.Types.Symbol[], properties=} <- AMQP:[-2144030978:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- AMQP:[1188878611:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- AMQP:[-607077024:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- AMQP:[1563351650:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- AMQP:[1435533887:0] Begin\{remoteChannel=0, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1519399825:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} <- AMQP:[-1631994231:0] Open\{ containerId='amq', hostname='', maxFrameSize=131072, channelMax=65535, idleTimeOut=30000, outgoingLocales=null, incomingLocales=null, offeredCapabilities=Apache.Qpid.Proton.Types.Symbol[], desiredCapabilities=null, properties=System.Collections.Generic.Dictionary`2[Apache.Qpid.Proton.Types.Symbol,System.Object]} -> AMQP:[1435533887:7] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:1] Begin\{remoteChannel=1, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:2] Begin\{remoteChannel=2, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:3] Begin\{remoteChannel=3, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:4] Begin\{remoteChannel=4, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:5] Begin\{remoteChannel=5, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:6] Begin\{remoteChannel=6, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] -> AMQP:[1435533887:8] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:1] -> AMQP:[1435533887:9] Begin\{remoteChannel=null, nextOutgoingId=0, incomingWindow=1600, outgoingWindow=2147483647, handleMax=null, offeredCapabilities=null, desiredCapabilities=null, properties=} ClientConnection:[ID:25035127-93c5-401a-a8d5-1252c79d2dbd:1:2] Unhandled exception. <- AMQP:[1435533887:7] Begin\{remoteChannel=7, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:8] Begin\{remoteChannel=8, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} <- AMQP:[1435533887:9] Begin\{remoteChannel=9, nextOutgoingId=1, incomingWindow=2147483647, outgoingWindow=2147483647, handleMax=65535, offeredCapabilities=null, desiredCapabilities=null, properties=} Apache.Qpid.Proton.Client.Exceptions.ClientConnectionRemotelyClosedException: The key already existed in the dictionary. ---> Apache.Qpid.Proton.Engine.Exceptions.ProtonException: The key already existed in the dictionary. ---> System.ArgumentException: The key already existed in the dictionary. at System.Collections.Concurrent.ConcurrentDictionary`2.System.Collections.Generic.IDictionary<TKey,TValue>.Add(TKey key, TValue value) at System.Collections.Generic.CollectionExtensions.TryAdd[TKey,TValue](IDictionary`2 dictionary, TKey key, TValue value) at Apache.Qpid.Proton.Types.Symbol.ToString() in /root/qpid-proton-dotnet/src/Proton/Types/Symbol.cs:line 177 at Apache.Qpid.Proton.Types.Security.SaslMechanisms.<>c.<ToString>b__13_0(Symbol item) in /root/qpid-proton-dotnet/src/Proton/Types/Security/SaslMechanisms.cs:line 68 at System.Array.ConvertAll[TInput,TOutput](TInput[] array, Converter`2 converter) at Apache.Qpid.Proton.Types.Security.SaslMechanisms.ToString() in /root/qpid-proton-dotnet/src/Proton/Types/Security/SaslMechanisms.cs:line 68 at System.Text.ValueStringBuilder.AppendFormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.FormatHelper(IFormatProvider provider, String format, ParamsArray args) at System.String.Format(String format, Object[] args) at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameLoggingHandler.Trace(String prefix, Int32 connection, Int32 channel, Object performative, IProtonBuffer payload) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameLoggingHandler.cs:line 161 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameLoggingHandler.HandleRead(IEngineHandlerContext context, SaslEnvelope envelope) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameLoggingHandler.cs:line 81 at Apache.Qpid.Proton.Engine.Implementation.ProtonEngineHandlerContext.InvokeHandlerRead(SaslEnvelope envelope) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEngineHandlerContext.cs:line 162 at Apache.Qpid.Proton.Engine.Implementation.ProtonEngineHandlerContext.FireRead(SaslEnvelope envelope) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEngineHandlerContext.cs:line 106 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.HandleRead(IEngineHandlerContext context, SaslEnvelope envelope) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 117 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.FrameBodyParsingStage.Parse(IEngineHandlerContext context, IProtonBuffer input) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 426 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.FrameSizeParsingStage.Parse(IEngineHandlerContext context, IProtonBuffer input) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 282 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.HandleRead(IEngineHandlerContext context, IProtonBuffer buffer) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 93 --- End of inner exception stack trace --- at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.ParsingErrorStage.FireError(IEngineHandlerContext context) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 467 at Apache.Qpid.Proton.Engine.Implementation.ProtonFrameDecodingHandler.HandleRead(IEngineHandlerContext context, IProtonBuffer buffer) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonFrameDecodingHandler.cs:line 110 at Apache.Qpid.Proton.Engine.Implementation.ProtonEngineHandlerContext.InvokeHandlerRead(IProtonBuffer buffer) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEngineHandlerContext.cs:line 172 at Apache.Qpid.Proton.Engine.Implementation.ProtonEngineHandlerContext.FireRead(IProtonBuffer buffer) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEngineHandlerContext.cs:line 96 at Apache.Qpid.Proton.Engine.Implementation.ProtonEnginePipeline.FireRead(IProtonBuffer input) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEnginePipeline.cs:line 340 at Apache.Qpid.Proton.Engine.Implementation.ProtonEngine.Ingest(IProtonBuffer input) in /root/qpid-proton-dotnet/src/Proton/Engine/Implementation/ProtonEngine.cs:line 237 --- End of inner exception stack trace --- at Apache.Qpid.Proton.Client.Implementation.ClientConnection.CheckClosedOrFailed() in /root/qpid-proton-dotnet/src/Proton.Client/Client/Implementation/ClientConnection.cs:line 611 at Apache.Qpid.Proton.Client.Implementation.ClientConnection.OpenSessionAsync(SessionOptions options) in /root/qpid-proton-dotnet/src/Proton.Client/Client/Implementation/ClientConnection.cs:line 207 at Apache.Qpid.Proton.Client.Implementation.ClientConnection.OpenSession(SessionOptions options) in /root/qpid-proton-dotnet/src/Proton.Client/Client/Implementation/ClientConnection.cs:line 202 at Apache.Qpid.Proton.Examples.HelloWorld.Program.Main(String[] args) in /root/qpid-proton-dotnet/examples/Example.CreateSession/Program.cs:line 53