Недопустимое исключение программы в сборке выпуска (.NET 4.6.1)

У меня есть программа, которая имеет дело с сокетами связи асинхронно. Исключение, которое я получаю, возникает только при сборке релиза (на сборочных машинах) Код, который вызывает проблему, - это действительно простая подпрограмма для начала прослушивания входящих соединений сокетов:

public async Task Listen()
    {
        try
        {
            var endpoint = new IPEndPoint(IPAddress.Loopback, Port);
            using (Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
            {
                Socket.Bind(endpoint);
                Socket.Listen(Limit);
                while (!Shutdown)
                {
                    var socket = await Socket.AcceptAsync().ConfigureAwait(false);

                    // some code handling connection

                    var result = await Socket.ReceiveAsync(state).ConfigureAwait(false);
                    Received(result, state);
                }
            }
        }
        catch (ObjectDisposedException) {}
        catch (Exception ex) when (ex is SocketException || ex is ApplicationException || ex is ThreadAbortException)
        {
            OnError?.Invoke(this, ex);
            Dispose();
        }
    }

AcceptAsync и ReceiveAsync - это методы расширения, которые используют шаблон TPL с Task.Factory.FromAsync. Точное исключение следующее:

Exception Type:        System.InvalidProgramException 
Exception Message:     Common Language Runtime detected an invalid program. 

Это, кажется, происходит в:

System.Runtime.CompilerServices.AsyncVoidMethodBuilder.Start

Исключение генерируется мгновенно, когда вызывается этот метод. Есть идеи, что может быть не так?

1 ответ

Согласно MSDN, это исключение информирует пользователя о недействительном коде IL. Так что что-то может быть сломано в рамках. Я рекомендую вам попытать счастья в Connect.Microsoft. Кроме того, если вы действительно заинтересованы и ищете быстрое решение, вы можете проверить код IL цепочки ошибочных методов.

Другие вопросы по тегам